Process (Processor = CPU)
- 메인 메모리에서 실행되고 있는 프로그램 (현재 돌고 있는 프로그램)
Process Creation
1. Interactive login (로그인 할 때)
2. Created by OS to provide a service (기본 운영체제에 의한 실행, exe와 같은 실행 파일이 제공될 때)
3. Spwned by existing process (통합개발프로그램에 의한 실행, 기존 프로그램에 의한 실행)
Process Termination
1. Normal completion (정상 종료, main함수에 의한 종료 - exit)
2. Bounds violation (비정상 종료, 포인터 변수의 주소값 오류, 다른 메모리 값 침범 시, 운영체제가 강제 종료)
3. Arithmetic error (비정상 종료, 숫자를 0으로 나눌 때)
4. Invalid instruciton (비정상 종료, 명령어가 깨진 경우 - 일반적이진 않음)
5. Parent termination (비정상 종료, 자식프로그램이 도는 중에 부모프로그램이 종료되면 자동 종료)
Process Contral Block (PCB)
- 운영체제 내에서 관리되는 프로세스 구조체 (process structure)
- 커널에서 하나의 프로세스를 관리하는데 필요한 정보요소를 가지고 있음
Trace of Process
Scheduler (커널 내의 하나의 함수)
- 실행 가능한 process들 중 우선순위가 가장 높은 프로세스를 고른 후
- 그 프로세스에게 processor(CPU)를 넘겨주는(dispatcher) 역할을 수행하는 중요한 함수
* dispatcher만 쓰는 것이 아니라 scheduler를 감싸줘야 함 *
Process States
1. New : 프로그램의 실행을 준비하는 단계
2. Ready : processor만 주어지면 언제든 실행할 수 있는 상태 (Clock interrupt, 0.1초 초과했을 때 ready로 넘어옴)
3. Running : processor에 의해 현재 실행 중일 때
4. Blocked: I/O 장치에서 대기하는 상태 (데이터가 아직 입력 안 된 상태)
- processor가 주어져도 실행 할 수 없는 상태
- 기다리던 데이터가 도착하면 ready 상태로 변환
- I/O 함수를 호출할 때 (데이터가 도착할 때까지 대기)
- Memory fault가 발생 (프로그램이 메모리에 없고 디스크에 있을 때 메모리로 읽어 올 때까지 대기)
5. Exit : 프로그램 실행이 완료되어 폐기 단계 (모든 데이터 삭제)
* 글자 하나하나 칠 때마다 계속 이 과정을 반복한다 *
What event wait, and event occurs?
1. Keyboard or Mouse
Blocked State : scanf(), GetMessage() 호출
Ready State : 키보드에서 엔터를 누르거나 마우스를 움직이거나 버튼을 누를 때
2. Disk
Blocked State : read(), fread(), fscanf() 호출
Ready State : 디스크가 파일을 읽어 메모리에 전달한 후
3. Network
Blocked State : receive() 호출
Ready State : 네트워크 보드에 데이터가 도착했을 때
4. Timer
Blocked State : Sleep(2000),sleep(2) 호출
Ready State : 지정한 시간이 지난 후 또는 time quantum(0.1초) 초과
5. Semaphore 변수 s;
Blocked State : lock(s) 호출, 누군가 이미 lock한 경우
Ready State : 다른 프로세스가 unlokc(s) 함수 호출해서 lock 풀어줄 때
Suspended Processes
- 메모리에 있는 모든 process가 I/O를 대기하고 있고 processor는 idle 상태(놀고 있는 상태)가 될 수 있음
장시간 대기 : 메모리 --> 디스크 (swap out) / 이벤트 들어옴 : 디스크 --> 메모리 (swap in)
- swap out : 장기간 대기 상태의 프로세스를 디스크의 별도의 swap 영역으로 빼내고 그 자리에 다른 프로세스를 넣어 실행
- swap in : 기다리던 이벤트가 들어오면 다시 디스크에서 메모리로 swap in 함 ( Suspend -> Ready state로 됨 )
'Computer > Operating system' 카테고리의 다른 글
08 Virtual Memory (1) (0) | 2021.10.25 |
---|---|
ch07. Memory Mangement (0) | 2021.10.12 |
Ch03 Processes2 (0) | 2021.09.23 |
Ch02 Types of Operating System (0) | 2021.09.14 |
Ch01 OS overview (0) | 2021.09.14 |