Computer/Operating system

Ch03 Processes2

코머 2021. 9. 23. 03:44

Process Structure 

Process Control Block

1. Process Identification

- identifiers : process ID, parent process ID(내 프로그램을 실행시켜준 프로그램), User ID, group ID

2. Processor State Intormation

- context data : 실행중인 프로세스가 일시 중지될 때 processor의 registers 전부를 백업시켜 놓는 장소

(processor registers -> memory)

- General Working Registers

- program counter register (PC)

- Program status word(PSW) register : 비트별로 저장한 레지스터

- Stack Pointer Register (SP) : 스택의 꼭대기 값을 가르키는 포인터의 주소를 저장하는 레지스터

   스택에 저장되어 있는 내용 : 함수의 매개변수, 지역변수, 함수의 리턴 주소

   함수를 리턴하면 함수에 대한 지역변수의 값은 더이상 참조 불가

3. Process Control Information

- Scheduling and State Information

Process state : CPU 상태값

Priority : 우선순위값

Scheduling-related information : CPU가 기다렸던 시간, 지금까지 CPU 얼마나 썻는지

Event : 이벤트 관련 정보

- Data Structuring : 다양한 링크 리스트를 포인터한다.

필요한 경우 - ready or waiting queue

- Interprocess Communication : 데이터를 전달하기 위한 간단한 정보들은 임시저장

- Process Privileges

- Memory Management : 메모리 관리를 위해 필요한 포인터 변수

- Resource Ownership and Utilization : file, sockets, windows 등을 열기 위한 구조체를 찾기 위한 포인터 변수


Modes of execution

- User mode : 사용자가 작성한 프로그램을 실행

- Kernel mode : 운영체제 안에 내장되어 있는 함수를 불러서 실행

   더 많은 특권을 가진 모드

   Kernel mode로 변경되는 두 가지 경우 :

   1) API 함수를 호출하여 커널로 진입

   2) CPU가 사용자 프로그램을 실행하다가 interrup가 들어와서 device driver 내의 interrupt handler를 실행할 때 

 

Process Creation

- 프로세스의 ID 값 생성

- 프로세스의 메모리 확보

- control block 초기화

- ready 큐에다가 링크리스트로 연결 (new -> ready)

- I/O 에 대한 포인터 값을 설정

* 프로그램이 종료되면 자동적으로 메모리 반환 *

 

Interrupt 발생 시의 처리 과정

- Mode switch (user mode -> kernel mode)

1) I/O device 또는 timer에서 imterrupt 발생 

    인터럽트처리함수(ISR)의 시작주소로 jump (벡터링)

    현재 실행 중인 프로세스의 문맥(registers)을 PCB에 저장 (문맥 저장)

2) Interrupt handler(ISR)

   ISR의 고유기능 실행 

   - ISR은 Ethernet-> IP-> TCP 함수를 호출

   - 해당 장치의 대기 큐에서 데이터를 기다리던 프로세스를 찾음

   - 데이터를 전달하고 blocked 상태에서 ready 상태로 변환

   - 대기 큐에서 프로세스 구조체를 제거하고 ready 큐로 옮김

3) Scheduler() 함수 호출 : 모든 ISR의 마지막엔 항상 이 함수 호출

     다음에 실행할 최우선순위 프로세스 선택

     이 프로세스를 Ready 상태에서 Running 상태로 변경

     PCB에 저장된 문맥을 processor로 load함 (문맥 복구)

     최우선순위 프로세스가 실행된다 (kernel mode -> user mode로 switch)

 

Process Switch

- Processor가 p1 프로세스에서 p2 프로세스로 넘어가는 것을 의미

- 언제 발생하는가? (크게 2가지)

  1) process p1 실행 중 -> interrupt 발생 -> ISR에서 고유기능 실행 -> scheduler() 호출 -> process p2 실행 

  2) process p1 시행 중 -> I/O 함수 호출 -> I/O 장치에 데이터가 없음 -> blocked 상태 설정(대기) -> scheduler()호출 -> process p2 실행 

- 발생 원인 5가지 

   1) Clock interrupt : Time sharing system에서 time slice(0.1초)를 다 사용한 경우 또는 sleep(2)에서 2초가 초과된 경우

   2) I/O interrupt (키보드, 디스크, USB, 네트워크 장치) : 해당 장치에서 기다리던 데이터가 도착한 경우

   3) I/O 함수 호출 (Supervisor call : OS API 함수) :

       실행되던 프로세스가 아래의 API 함수를 호출했는데 해당 장치에 데이터가 없을 경우

       함수를 호출한 프로세스는 block, scheduler() 호출

   4) Trap interrupt : 에러 발생 시 해당 장치가 발생시킴

       Segment fault (pointer 변수가 잘못되었을 때; memory 장치)

       Illegal instructions (명령어가 깨졌을 때, CPU)

   5) Memory fault interrupt (메모리 장치에 의한)

        가상기억장치에서는 프로그램의 일부분만 메모리에 로드시켜서 프로그램을 실행 시킬 수 있음

        만약 현재 실행 중인 프로그램의 다음에 실행할 명령어 또는 변수가 현재 메모리에 없을 때 memoy fault 발생

        디스크에서 다음 명령어가 포함된 블록을 읽도록 지시한 후 현 프로세스는 Blocked state로 대기시킴 -> scheduler() 호출

        나중에 디스크가 읽어 주면 디스크 interrupt 발생 -> 디스크 interrupt의 마지막에 scheduler() 호출 -> 프로그램 재실행

       

'Computer > Operating system' 카테고리의 다른 글

08 Virtual Memory (1)  (0) 2021.10.25
ch07. Memory Mangement  (0) 2021.10.12
Ch03 Processes1  (0) 2021.09.23
Ch02 Types of Operating System  (0) 2021.09.14
Ch01 OS overview  (0) 2021.09.14