OS- 1. Processes(프로세스)

장준표·2020년 4월 17일
0

운영체제

목록 보기
1/2

Process

실행 중인 프로그램(an instance of a running program)

Process의 구성

Images

  • Code: 명령 코드(instrunction code)
  • Data: 다양한 변수(전역)
  • Stack: 함수 call을 위한 states들
  • Heap: 동적 메모리

Process context

  • Program context
    - 데이터 레지스터(data register)
    - 프로그램 카운터(PC), 스택 포인터(SP)
  • Kernel context
    - pid,gid,sid,env...
    - VM structure(페이지 테이블)
    - open files, signal handlers...

Process control Block(PCB) a.k.a PD(Process Descriptor)

프로세스에 관련 된 정보를 가지고 있는 자료 구조(structure)

PCB의 구성

Image

Process context

  • program context
  • kernel context

리눅스에서는 task_struct라고 구현 되어있음

Process State: 5-State model

  • new: 프로세스가 생성됨
  • ready: ready queue에서 프로세서에 의하여 스케쥴 되기 기다리는 상태
  • running: 프로세스가 instruction 실행 중
  • blocked(waited): 프로세스가 특정 이벤트(e.g 입출력 완료, signal)를 기다리는 상태
  • exit(terminated): 프로세스가 종료된 상태

Process Switching

Dual mode operation

대부분의 OS는 특정한 H/W를 이용해서 user가 직접적으로 low-level의 H/W 와 교류하거나임의의 메모리 주소에 접근하는 것을 막는다.

2가지의 CPU의 모드를 가진다.

  • 유저 모드(User mode)
    • 권한이 적은 모드
    • 유저의 프로그램은 보통 이 상태로 실행됨
  • 커널 모드(Kernel mode)
    • 권한이 높은 모드
    • 그 프로세스의 명령문 ,레지스터, 메모리에 대한 권한을 가짐
    • OS의 핵심

Process switching

실행 중인 프로세스 인터럽트 되거나 프로세서(processor)에 의해 강제로 다른 프로세스가 실행(running state)되게 할 때, 실행 중이던 프로세스가 다른 프로세스에게 넘겨주는 과정을 말함

  • 언제 process swiching이 일어남?
    아래 3가지 경우에 일어날 수도 있음( 안 일어난다는건? -> 모드 스위칭만 일어난 경우!)
    • 외부 인터럽트(External Interrupt): 타이머, I/O 인터럽트
    • 내부 트랩(Exception): 페이지 폴트, 잘못된 operation(divide by 0)
    • 시스템 콜(syscall): I/O 명령, fork
  • 프로세스 스위칭(Process switching) VS 모드 스위칭(Mode Switching)
    • 모드 스위칭: 위 3가지(외부 인터럽트, 내부 트랩, 시스템콜) 경우 항상 모드 스위칭이 일어남
      과정
      • 현재 프로세스의 상태(process context- reg, flags(PC,SP))를 저장
      • PC를 특정한 곳으로 향하게함(커널 모드를 수행하기 위한 장소)
      • 커널 모드가 수행됨으로 특정 권한의 명령을 수행가능.
      모드 스위칭만 하고 프로세스 스위칭을 하지 않는 경우 process context의 저장과 간단한 복원만 일어남(overhead가 적음)
    • 프로세스 스위칭: 모드 스위치가 일어나고 경우에 따라 프로세스 스위칭이 일어남
      과정
      • 현재 프로세스의 context(process context)를 저장 - 어디에? 커널 스택에(PCB에서 context 저장)
      • 현재 프로세스의 상태를 바꾸어준다. running -> blocked/ready/exit
      • PCB를 적절한 queue에 넣어줌
      • 다른 실행될 process를 스케쥴러를 통하여 선정
      • 선정된 process를 적절한 queue로 부터 가져옴
      • 실행될 프로세스의 상태를 running 으로 바꿈
      • 실행될 프로세스의 context(register, flags)를 복원 한다.
      프로세스 스위칭을 하는 동안 프로세서는 진행 상황(process들)이 없게 됨.
      OS가 복잡 할수록 context 스위칭을 하는 동안 하는 일이 많아짐.

is the OS a process?

OS도 processor에 의하여 실행되어야함. 그렇다면 어떤 방식으로 ?

(A) 프로세스가 아닌 커널
(B) 유저 프로세스 안에서 실행되는 커널
(C) 프로세스로 취급 되는 커널

(B)의 방식이 리눅스에서 이용되며 모드 스위치만 일어나는 경우 오버헤드가 적은 장점이 있다.

Cooperating Processes

Communication

  • Data exchange

Synchronization

  • Ordering between activities

Process coordination(Communication & Synchronization)

  • Application programming (e.g shared memory)
  • IPC(Inter-process communication)

Interprocess communication

IPC
프로세스간의 communication과 synchronize를 위한 장치.

IPC Models

  • 하나의 컴퓨터에서 2개의 process간의 IPC
  • 다른 컴퓨터에서 2개의 process간의 IPC
  • Client-Server model

UNIX의 IPC 종류

  • Basic IPC : Pipe,FIFO(named pipe)
  • Advanced IPC
    • Message passing
    • semaphore
    • shared memory
    • socket(internet IPC , TCP/UDP)

0개의 댓글