iOS Ellen

[운영체제] Process 1 본문

카테고리 없음

[운영체제] Process 1

Ellen61 2022. 12. 4. 19:34

이화여자대학교 반효경 교수님의 운영체제 강의를 바탕으로 운영체제 스터디에서 공부한 내용을 작성하였습니다. [강의 링크]

프로세스의 역사

초기의 컴퓨터 시스템은 한 번에 하나의 프로그램만 실행 할 수 있었다. 프로그램이 시스템을 완전히 제어하고 모든 자원에 접근할 수 있었지만 현대의 컴퓨터 시스템은 메모리에 다수의 프로그램이 병행 실행 되는 것이 가능하다. 이렇게 발전되면서 다양한 프로그램을 견고하게 제어하고 구획화하는 것이 필요해졌다. 이러한 필요성이 프로세스의 개념을 낳았고 프로세스란 실행중인 프로그램을 말한다. 프로세스는 현대의 컴퓨팅 시스템에서 작업의 단위이다.

프로세스의 개념

Process is a program in execution 실행중인 프로그램

프로세스의 문맥(Context) 세종류

특정상태(현재?)를 규명하기위한 필요한 요소들을 문맥이라고 한다.

  • 하드웨어 문맥
  • 프로세스의 주소 공간
  • 프로세스 관련 커널 자료 구조

문맥이 왜 필요할까?

프로세스 혼자 실행이 된다면 알필요없는데 현대의 컴퓨터는 멀티태스킹, 타임쉐어링이 이루어지기 때문에 context가 필요하다. context를 알고 있지 않으면 (CPU를 다시 잡을때(????)) 그 시점의 다음부터 익스트럭션을 실행할 수 있다. 만약 없다면 처음부터 다시 실행해야함 (무슨뜻이지)

프로세스의 상태 (Process State)

프로세스 상태 in 공룡책

프로세스는 실행되면서 그 상태(State)가 변한다. 프로세스의 상태는 부분적으로 그 프로세스의 현재의 활동에 따라서 정의된다. 프로세스는 다음 상태 중 하나에 있게 된다.

  • new: 프로세스가 생성 중이다.
    • 경우에 따라서 추가되는 상태
  • running: 명령어들이 실행되고 있다.
  • waiting(blocked, sleep): 프로세스가 어떤 이벤트(입출력 완료 또는 신호의 수신 같은)가 일어나기를 기다린다.
  • ready: 프로세스가 처리기(CPU)에 할당되기를 기다린다.
  • terminated: 프로세스의 실행이 종료 되었다.(excution)
    • 경우에 따라서 추가되는 상태
    • 프로세스의 수행이 끝나고 정리할게 남아있는 상태

이들 이름은 임의적이고 운영체제마다 변한다.

이들이 나타내는 상태들은 모든 시스템에서 찾아볼 수 있다.

큰 틀은 무조건 Running → Blocked → Ready 순서로 이루어지는걸까???

Process Control Block(PCB)

각 프로세스는 운영체제에서 프로세스 제어 블록(태스크 제어 블록이라고도 함)에 의해 표현된다. 프로세스 제어 블록은 특정 프로세스와 연관된 여러 정보를 수록하며 다음과 같은 것들을 포함한다.

  • 프로세스 상태
  • 프로그램 카운터
  • CPU 레지스터들
  • 메모리 관리 정보
  • 회계정보(accounting)
  • 입출력 상태 정보

문맥 교환(Context Switch)

timer interrupt(CPU를 다른 프로세스에게 넘길 의도가있는 인터럽트)

인터럽트가 발생하면 시스템은 인터럽트 처리가 끝난 후에 문맥을 복구할 수 있도록 현재 실행 중인 프로세스의 현재 문맥을 저장할 필요가있다. (아까 교수님 설명이 이거인듯)

이는 결국 프로세스를 중단했다가 재개하는 작업이다.

문맥은 프로세스의 PCB에 의해 표현된다.

CPU 코어를 다른 프로세스로 교환하려면 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 보관된 상태를 복구하는 작업이 필요. 이 작업을 문맥 교환 이라고 한다.

프로세스를 스케줄링하기 위한 큐

Ready Queue와 다양한 Device Queue

프로세스가 시스템에 들어가면준비 큐에 들어가서 준비 상태가 되어 CPU코어에서 실행되기를 기다린다. 이 큐는 일반적으로 연결 리스트로 저장된다. 준비 큐 헤더에는 리스트의 첫 번째 PCB에 대한 포인터가 저장되고 각 PCB에는 준비 큐의 다음 PCB를 가리키는 포인터 필드가 포함된다.

스케줄러(Scheduler)

Disk 스케줄러 이야기는 안함.

위에서 설명하고있지는 않지만 Medium-Term Scheduler는 Suspended(stopped) 프로세스 상태와 연관이있다.