저수준에서의 프로세스 관리

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