[OS] 3. Process (1)

didio·2023년 3월 2일

OS

목록 보기
3/4

📌 프로세스 개념

‘process is a program ins execution’

실행 중인 프로그램

📌 프로세스 문맥

  • cpu수행 상태를 나타내는 하드워드 문맥이다.
    • program counter,각종 register
    • 프로세스는 어디까지 도달해있는가를 나타내는것
      • (program counter가 어느부분을 가리키고 있는가?어떤 instruction까지 연산을 수행하고 있는가를 알게해준다.
  • 프로세스 주소공간
    • code,data,stack
    • 주소 공간에는 어떤 내용이 들어있는가
  • 프로세스 관련 커널 자료구조
    • 프로세스가 생길때마다 운영체제는 자신의 PCB(데이터안에 있는 자료구조)를 관리한다.
      • PCB, Kernel stack
    • 운영체제가 프로세스에 대해서 어떻게 관리해야하는 가를 알아야한다.

📌 프로세스의 상태

  • 프로세스는 상태(state)가 변경되며 수행된다.
    • running
      • CPU를 잡고 instuction을 수행중인 상태
    • ready
      • CPU가 하나라고 가정한 상태에서 cpu를 기다리는 프로세스가 많은데, 이때 프로세스들이 CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고 cpu만 있으면 바로 수행이 가능한 상태)
    • blocked
      • CPU를 얻어도 당장 instruction을 수행 할 수 없는 상태 (디스크에서 file을 읽어와야 하는 경우,I/O장치가 실행되는 경우)

      • process자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태

        cpu를 오랜 시간동안 사용해야하는 경우에는 timer에 의해 cpu를 얻었다 뺐겼다 할 수 있다. (ready → running → ready ….)

        📍 I/O작업이 실행됐을 때 발생하는 프로세스의 상태 변화

        Ready 상태의 queue가 존재, I/O장치들의 queue가 존재하여 process가 줄지어 기다리고 있다.

        만약 키보드의 입력이 발생한다면 keyboard I/o queue에 process가 줄을 선다. 이때의 process의 상태는 Blocked로 바뀐다. i/o controller의 지휘하에 순서대로 처리가 된다. 작업이 끝나면 i/o controller가 끝냈음을 알리기위해 cpu에게 interrupt를 건다. cpu는 실행하던 작업을 없애고 cpu제어권을 os에게 넘기고 os가 메모리 영역에 해당 데이터를 넘긴다. Blocked상태를 ready로 바꾸고, ready queue 에 줄을 세운다.

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

      • job queue

        • 현재 시스템 내에 있는 모든 프로세스 집합
      • Ready queue

      • I/O device queue

        📍 blocked : 자신이 요청한 event가 만족되면 Ready

        📍 Suspended:외부에서 resume해주어야 Active

📌 Process Control Block(PCB)

  • prcess하나당 존재한다.
  • 운영체제가 각 프로세스를 관리하기 위한 프로세스의 정보
  • os가 관리상 사용하는 정보(스케줄링,우선순위값 등등)
  • cpu수행 관련 하드웨어값 , 프로세스 문맥 관련한 정보(program counter,register)
  • 메모리 관련 (code,data,stack의 위치 정보)
  • 파일 관련 (open file descriptors)

📌 문맥 교환(Context Switch)

cpu는 한 프로세스가 독점적으로 가지지 않고, 빠르게 이동한다. 이때 다시 cpu를 넘겨받을 때 처음으로 돌아가지 않고 넘겨주던 시점으로 유지된다.

  • cpu를 프로세스에서 다른 프로세스로 넘겨주는 과정이다.
  • cpu가 다른 프로세스로 넘어갈때 운영체제가 하는 일
    • cpu를 내어주는 프로세스 상태를 커널 주소 공간안의 PCB에 저장한다.
    • CPU를 얻게 되는 프로세스의 상태를 PCB에서 읽어온다.

📍 이때 system call이나 interrupt발생시 반드시 context switch가 일어나는 것은 아니다. 커널 모드로 변환되는 것과 헷갈리지 말아야한다. 이때도 수행정보를 PCB에 일부 저장해야하지만 부담이 적다.

📍 timer interrupt 나 I/O요청 system call시에는 context switch가 발생한다. 이 두경우는 모두 한프로세스에서 다른 프로세스로 넘어가는 경우이다.

📌 스케줄러

  • long-term scheduler (time share에는 보통 없음)
    • 시작 프로세스 중 어떤 프로세스를 running시킬지 결정한다.
    • 메모리에 올라갈 것을 admitted한다.
  • short-term scheduler (cpu scheduler)
    • 어떤 프로세스를 다음번에 running시킬지 결정한다.
    • 프로세스에 cpu를 주는 문제
    • 빨라야한다.
  • Medium-term scheduler (swapper)
    • 메모리가 너무 많이 차있다면 프로세스를 메모리에서 디스크로 쫓아낸다.

✏주로 모든 memory를 올려놓는데, 너무 많은 메모리를 차지한다면 프로세스를 통째로 메모리에서 디스크로 쫓아낸다. (suspensed state)

profile
🌈프론트엔드 공부 기록

0개의 댓글