저수준에서의 프로세스 관리
2023. 9. 16. 03:58ㆍ전공/운영체제
듀얼 모드(Dual Mode)
모드비트(Mode bit)
- 운영체제 코드의 실행과 일반 사용자 정의 코드의 실행을 구분하기 위해 사용
사용자 모드(User mode)
- 모드비트 = 1
- 컴퓨터 시스템이 사용자 응용을 실행할 때 설정
커널 모드(Kernel mode)
- 모드 비트 = 0
- 운영체제가 컴퓨터 시스템에 대한 제어를 획득한 후 코드 실행
특권 명령(Privileged instruction)
- 컴퓨터 시스템 보호를 위해 운영체제만이 접근할 수 있는 명령어 집합
- 커널모드에서 실행
컴퓨터 시스템의 명령 실행 주기
- 시스템 부트시 하드웨어는 커널 모드에서 시작
- 운영체제 적재 이후 사용자 모드에서 사용자 프로세스 실행
- 트랩/인터럽트 발생 시 커널 모드로 전환(모드비트=0)
- 이후 사용자 프로세스가 제어 획득(모드비트=1)
시스템 콜(system call)
- 운영체제가 사용자 프로세스의 요청을 받아 특권 명령 대신 수행
시스템 콜(system call)
역할
- 운영체제에 의해 간접 실행할 수 있는 서비스에 대한 인터페이스 제공
예시
- file copy command
프로세스 제어 블록
프로세스 제어 블록(process control block, PCB)
- 프로세스 관리 정보를 저장한 구조체(Struct)
- 포인터(pointer)
- 다음 프로세스의 주소 저장
- 메모리를 가리키는 변수로 레디큐에 삽입된 프로세스 중 자신의 프로세스 다음으로 삽입된 프로세스의 PCB가 저장된 주소를 가리킴
- process id
- 프로세스마다 할당되는 unique number로 프로세스를 구분하기 위한 기본단위
- 프로세스 상태(process state)
- 프로세스의 5가지 상태 정보를 저장
- New, Ready, Running, Waiting, Terminated
- process priority
- 프로세스의 스케쥴링 우선순위 정보 저장하는 변수
- Accounting
- 프로세스를 관리할 때 참조해야 하는 CPU사용 시간이나 프로세스 계정정보 등을 저장하는 변수
- CPU사용량, 클록 타임(Clock time) 길이
- 프로그램 카운터(Program counter,PC)
- 다음 인스트럭션 코드의 주소 저장
- CPU 레지스터(CPU Registers)
- 프로세스 중심 레지스터의 콘텐츠를 저장
리눅스에서의 PCB
- task struct(C struct)
- <linux/sched.h> 파일에서 정의
스케쥴링 큐(Scheduling Queue)
레디큐(Ready queue)
- 실행을 위해 메모리에서 상주하면 순서를 기다리고 있는 프로세스 집합
대기큐(Wait queue)
- 이벤트(예: 입출력 이벤트) 처리 완료를 기다리고 있는 프로세스 집합
- 프로세스들은 각 큐 사이를 반복적으로 오가며 처리 수행
링크드 리스트 기반 스케쥴링 큐 구현
대기큐 관리 및 운용
문맥 교환(Context Switching)
문맥(Context)
- 실행 중단된 프로세스들을 추후 재실행하기 위한 정보
- 프로세스 제어 블록에 저장
문맥 교환(Context switching)
- CPU자원을 다른 프로세스에게 할당하는 경우 발생
- 중단할 현재 프로세스의 상태 정보(context 혹은 state)를 PCB에 저장
- 새롭게 실행할 프로세스의 저장된 상태 정보를 레지스터로 불러들임
- 교환 시간(switching time)이 오버헤드로서 존재 → 시스템 성능 문제
'전공 > 운영체제' 카테고리의 다른 글
동기화(Synchronization) (0) | 2023.09.16 |
---|---|
CPU 스케쥴링 (0) | 2023.09.16 |
프로세스 (0) | 2023.09.16 |
리눅스 (0) | 2023.09.16 |
컴퓨터 시스템과 운영체제 (0) | 2023.09.16 |