일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 반도체 엔지니어
- neople
- 이더리움
- 면접
- 게임기획
- 반도체
- 메모리
- 보안
- 네트워크보안
- 인터럽트
- Unity
- 아두이노함수
- 레지스터
- 에러
- 반도체 취업
- MuchineRunning
- 유니티
- 던파
- 컴퓨터구조
- 암호화
- 아두이노우노
- 머신러닝
- 던전앤파이터
- 네오플
- 메타마스크
- 아두이노
- 유니티에러
- MLAgent
- 네트워크
- memory
- Today
- Total
Dreaming Deve1oper
Summary 본문
■ Functions of OS
- Process managemetnt (CPU scheduling) - Memory management ※ Kernal의 핵심- File system- I/O system- Device driver- Network system- Protection and Security- Virtualizaition
■ Process
- 프로그램을 실제로 띄워 메모리에서 수행하는 과정 중에 있는 것
Context Switch
프로세스가 번갈아가며 CPU를 점유하는 것.
현재 있는 상태를 저장하고 선택된 프로세스에 저장됐던 상태를 메모리 로드. > 프로세스가 왔다갔다하며 CPU를 점유하는 것 처럼 보인다.
■ Fork
■ IPC system
- shared memory
- pipe: 가장 효과적인 방법
└ 프로세스간에 데이터를 주고 받을 수 있는 파이프를 설치.
■ Thread
같은 프로세스 안에 실행되는 상황이 다른 것.
프로세스와의 차이점?
- 프로세스는 서로 다르면 거의 공유하는 데이터가 없다. 하지만 스레드는 대부분을 공유한다.
■ Multicore Programming
■ Amdhl's Law
Users and Groups
□ User ID
- 각 사용자에 대한 식별을 위한 고유한 양의 정수이다.
- 각 공정은 정확히 하나의 Uid와 연관되어 있다.
□ Group ID (gid)
- 각 사용자는 하나 이상의 그룹에 속할 수 있다. > 여러 개의 그룹에 속 할 수도 있다.
□ Root (super user)
- 시스템에서 거의 모든 작업을 수행할 수 있다.
- UID는 0.
■ Permissions
- 각 파일은 Owning user, owning group 및 사용 권한 비트 집합과 연결됩니다.
- 권한 비트는 abliity of owner, group, others for read, write, execute를 설명한다.
┗ Owner, Group, Others 3개가 각각 Read, Write, Execute 권한을 가지게 된다.
■ User ID and Group ID
User ID는 OS가 관리하는 숫자.
□ /ext/passwd and / et/group
- 숫자 값과 이름 간의 매핑
- username:password:uid:gid:comment:home directory:login:shell (/etc/passwd)
┗ 암호 x는 섀도 암호가 적용되었음을 의미.
- group name:passwrod:gid:users (/etc/group)
□ getpwuid() / getpwnam()
□ Return Values
- 성공하면 Passwd 구조로 포인터를 반환.
- 실패하면 NULL을 반환.
Foreground/Background Process
- 모든 Process는 group이 존재하고 이는 Session으로 묶인다. 그리고 Session은 Terminal과 연동된다.
□ Foreground process: Terminal에 보여서 수행되는 프로그램- 프로세스는 Ctrl c 또는 Ctrl z와 같은 신호를 포함하여 터미널에서 입력을 가져옴.
□ Background Process: Terminal에 떨어져서 background에서 스스로 돌아가는 프로그램 (Terminal로 control 불가능)
- 명령행 끝에 있는 ampersand & symbol (=앰퍼샌드 & 기호)
- 제어 터미널 없이 프로세스가 실행됨.
■ Job Control
- foreground jobs & background jobs
□ Jobs
- 수행하는 작업이건 아니건 모든 작업을 나열시킴.
□ foreground (fg)
- 현재 또는 지정된 작업을 맨 앞으로 가져온다.
□ background (bg)
- 현재 또는 지정된 작업을 백그라운드로 배치한다.
□ Stopped job
- 작업은 Ctrl z로 종료된다.
Read/Effective User/Group IDs (36:00)
Daemon Process
■ Deamon
- 데몬은 어떠한 제어 터미널도 연결하지 않고 백그라운드에서 실행되는 프로세스임.
- 일반적으로 데몬은 부팅할 때 시작됨.
- 일반적으로 데몬의 이름은 -d로 끝나지만 (crond 및 sshd[원격접속 프로그램]에서와 같이) 이는 필수는 아니며 보편적이지도 않음.
□ Deamon의 요구사항
- Init의 하위 항목으로 실행되어야 함.
- 터미널에 연결해서는 안 됨.
Signals
- 비동기 이벤트를 처리하기 위한 메커니즘을 제공하는 소프트웨어 인터럽트이다.
└ 사용자가 인터럽트 문자를 생성함.
- 프로세스 간 통신(IPC)의 원시적인 형태로서 한 프로세스는 다른 프로세서에 신호를 보낼 수도 있다.
- 모든 Signal은 접두사 SIG를 붙인다.
■ Sending a signal
□ kill()
- 한 프로세스에서 다른 프로세스로 신호를 보냄.
└ kill 유틸리티의 공통된 기초
#include <sys/types.h>
int kill (pid_t pid, int signo);
- Return Values
└ 성공하면 ()를 반환한다
└ 오류 발생 시 -1을 반환하고 오류 없음이 설정됩니다.
□ killpg()
- 지정된 프로세스 그룹의 모든 공정에 신호를 보냄.
#include <signal.h>
int killpg (int pgrp, int signo);
Reentrancy (재진입 함수)
- Reentrancy 함수는 두 개의 스레드에 의해 호출되었을 때 실제 실행이 인터리브되더라도(SUSv3에 의해 정의됨) 스레드가 정의되지 않은 순서대로 차례로 함수를 실행하는 것과 같이 효과를 나타내는 함수임.
- 커널이 신호를 올릴 때 프로세스는 어디에서나 코드를 실행할 수 있다.
└ 예를 들어, 프로세스가 중단될 경우 일관성 없는 상태가 되는 중요한 작업의 중간일 수 있다. (데이터 구조가 절반만 업데이트됨)
- 신호 핸들러는 재진입된 함수만을 사용해야 한다.
TIME
□ Real Time
- 현실 세계의 실제 시간과 날짜를 의미.
□ Process Time
-프로세스 사용자 공간 및 커널 공간에서 소비한 시간을 의미.
□ Unix Epoch
- 1970년 1월 1일 오전 00:00:00 UTC 또는 GMT로 정의.
└ Universal Time, Coordinated / Greenwich Mean Time
└ Unix 시스템은 1970년대에 시작했다.
- Unix 시스템은 epoch 이후 경과된 초의 수로 절대 시간을 나타냄.
■ Time Functions
- time()
#include <time.h>
time_t time (time_t *tloc);
- Return values └ 성공하면 Epoch 이후 시간 초의 값을 반환합니다. └ 오류 발생 시 -1을 반환하고 오류 없음이 설정됩니다.
- tloc는 재사용이 불가능하며 반환 값도 tloc가 가리키는 메모리에 저장됩니다.
Option Parsing
- getopt()
#include <unistd.h>
int getopt (int argc, char * const argv[], const char * optstring);
extern char * optarg;
extern int optind, opterr, optopt;
- Return values └ 각 옵션 요소의 문자 연속 └ ?: 오류 옵션 문자 └ -1: 모든 명령줄 옵션이 구문 분석됨
- argc 및 argv는 main() 함수에 점달되는 인수의 개수 및 배열이다.
- optstring은 올바른 옵션 문자를 포함하는 문자열이다. └ 올바른 옵션 문자는 표시되는 문자이다. └ 콜론(:) 뒤에 이러한 문자가 오는 경우 옵션에는 인수가 필요하다.
'리눅스, 유닉스' 카테고리의 다른 글
Exercises (0) | 2021.12.13 |
---|---|
총정리 (0) | 2021.12.04 |
CPU Scheduling (0) | 2021.10.18 |
Operating System Concept (0) | 2021.10.16 |