커널 영역(kernel space) 적재 <-> 사용자 영역(user space) 사용자 프로그램 적재커널(kernel) : 운영체제 핵심 서비스 담당사용자 인터페이스(UI; ex. GUI, CLI) 는 운영체제가 제공하는 서비스이지만 커널에 포함되지 않음이중 모드(dual mode) : CPU의 명령어 실행 모드.사용자 모드(user mode) : 운영체제 서비스를 제공받을 수 없음커널 모드(kernel mode) : 시스템 호출(System call)*을 통해 운영체제 서비스를 제공받을 수 있음시스템 호출(System call) : 소프트웨어 인터럽트의 일종프로세스(Process) : 실행 중인 프로그램CPU : 여러 프로세스들의 CPU 사용 관리 -> CPU schedulingMemory : 새로운 프로세스 실행시 메모리 적재, 메모리가 부족한 경우의 처리 등 메모리 관리I/O Device : 입출력 장치가 CPU 에 하드웨어 인터럽트 요청 시그널을 보내는 경우 CPU 는 운영체제의 커널 영역에 있는 인터럽트 서비스 루틴 실행.파일 시스템(File system)윈도우 : 작업 관리자 / 유닉스 : ps 명령어foreground process : 사용자가 보는 앞에서 실행되는 프로세스background process : 사용자가 볼 수 없지만 실행 중인 프로세스daemon : 사용자와 상호 작용 없이 정해진 일만 수행. (윈도우 계열 -> service)PCB 에 담기는 정보Process IDRegister ValueProcess StatusCPU Scheduling InfoMemory InfoFile / IO Device Info문맥(context)*을 PCB에 백업하고 새로운 프로세스를 실행하기 위한 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것문맥(Context) : 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보 -> PCB 에 기록텍스트 영역(text segment) 라고도 부름CPU가 실행할 명령어 (기계어) 저장읽기 전용 공간. (CPU가 실행할 명령어가 저장되므로 쓰기 금지)코드 영역과 더불어 크기가 고정되어 있는 정적 할당 영역힙 영역, 스택 영역 크기가 변하는 동적 할당 영역메모리 누수(Memory leak) 발생매개 변수, 지역 변수 등이 저장되는 공간생성 상태(New)준비 상태(Ready)실행 상태(Running)대기 상태(Blocked)종료 상태(Terminated)시스템 호출(ex. fork(), exec()) 을 통해 실행 도중 다른 프로세스 생성 가능
부모 프로세스(Parent Process) : 시스템 콜을 사용한 프로세스자식 프로세스(Child Process) : 시스템 콜에 의해 새로 생성된 프로세스프로세스 계층 구조 : 생성된 프로세스 간의 관계를 나타낸 것 -> pstree 명령을 통해 확인가능
init (Unix 계열), systemd(Linux 계열), launchd(macOS 계열).fork() 를 통해 프로세스 복제 -> exec()를 통해 생성된 프로세스의 메모리 공간을 다른 프로그램으로 덮어씀스레드(Thread) : 프로세스를 구성하는 실행의 흐름 단위단일 스레드 프로세스 : 프로세스를 구성하는 실행 흐름 단위가 하나멀티프로세스 : 여러 프로세스를 동시에 실행하는 것
멀티스레드 : 여러 스레드로 한 프로세스를 동시에 실행하는 것
둘 이상의 작업이 동일한 데이터에 대한 접근이 필요한 경우 멀티스레드가 멀티 프로세스에 비해 더 유리함
한정된 자원(CPU)을 공정하고 효율적으로 사용하기 위해 각 프로세스에 우선순위를 부여함.
프로세스 구분
입출력 집중 프로세스 (I/O bound process) -> I/O burstCPU 집중 프로세스 (CPU bound process) -> CPU burstUnix 계열 -> ps -el 명령 : 프로세스 우선순위 확인 / nice 명령 : 프로세스 우선순위 변경.
스케쥴링 큐(Scheduling queue) 를 통해 우선순위에 따라 각 프로세스를 관리.준비 큐(ready queue), 대기 큐(waiting queue), ...호위 효과(convoy effect))호위 효과를 방지하기 위해 작업 시간이 빠른 프로세스들부터 우선적으로 실행비선점형 스케쥴링 -> 선점형 으로 구현한 것이 최소 잔여 시간 우선 스케쥴링선점형 스케쥴링FCFS + Time sliceTime slice : 각 프로세스가 CPU를 사용할 수 있는 시간SJF + Round-robin.우선순위 부여 후 가장 높은 우선순위의 프로세스부터 실행SJF, SRT 도 포함 가능기아(Starvation)현상 : 우선순위가 낮은 프로세스의 실행이 계속 뒤로 연기되어 실행되지 않는 현상에이징(Aging) : 오랫동안 대기한 프로세스 우선순위를 점차 높여 기아 방지다단계 큐 스케쥴링 에서 프로세스들은 다른 큐로 이동할 수 없음 -> 기아 현상 여전히 발생 가능준비 상태 프로세스는 가장 높은 우선순위 큐에 삽입 후 일정 시간(타임 슬라이스)동안 실행타임 슬라이스 동안 실행CPU 집중 프로세스들의 우선순위는 점차 낮아짐 / IO 집중 프로세스들은높은 우선순위에서 실행 종료 1. 생성 상태
2. 준비 상태
3. 실행 상태
4. 종료 상태
5. 대기 상태
A, B, C, D 순으로 차례대로 처리된다.