3 . The Abstraction: Process

이석환·2022년 10월 20일
0

OS

목록 보기
3/6

1. (Virtual) Memory


메모리의 주소는 한 칸당 1byte의 크기를 가진다.
32 bit Architecture에서 가질 수 있는 메모리의 최대크기는 2^32 byte = 4GB

  • 스택 영역은 지역 변수 등 사라지는 애들이 들어간다 !
  • 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 즉, 사용자가 직접 관리하는 영역 !
  • Static 영역은 전역 변수같이 process의 시작과 동시에 초기화 되는 애들이 들어간다 !
  • Literals 영역도 마찬가지지만 읽을 수만 있다. 상수임 !
  • Instructions 영역은 사실 명령어라고 해석해야하지만 데이터 영역이라고 부름 프로그램 코드가 들어가있음 읽기만 가능 !

2. CPU Virtualization

How to provide the illusion of many CPU's
-> Time sharing !

Running one process, then stopping it and running another by round-robin fashion
어떻게 수행되는 놈을 끊고 다른 애를 실행했다가 끊었던 놈을 실행할 수 있을까 ?
스케쥴링을 배우면 알 수 있다 ! 아직까지는 Time sharing을 통해 illusion을 주는 것만 이해하자

3. Process

계속해서 나오는 Process에 대해서 알아보자 Program과 착각하기 쉽지만 다르다는 것을 알아야 함 !

Program - Executable Object File !
Code -> Compiler & Linker -> Program -> Loader - > Process
프로그램은 Disk에 존재하며 Life cycle이 없다.
디스크에 있는 프로그램을 Memory에 올린다면 Process가 되며 Life cycle이 있다.

  • Program은 Instruction의 집합 즉, 명령어와 그 명령어를 실행하기 위한 코드의 집합
    Disk에 있기 때문에 CPU의 권한을 바로 받을 수가 없다. 따라서 수행될 준비 아직 X

  • Process는 Instance of a running program
    실행되고 있는 프로그램의 형태 ! 즉, 메모리에 올라가있는 상태다

4. Process states

그래서 프로세스가 뭔데 ?
프로세스를 정확하게 이해하기 위해서는 state - model을 통해 알 수 있다.
Process는 state를 가지고 있다.
Program은 그냥 존재함이라고 표현한다면 Process는 어떠한 형태를 가지고 있다고 말할 수 있다.
각 State의 기준은 수행되기 위한 resource를 가지고 있는가 / CPU에 대한 권한을 가지고 있는가이다.

4-1. 3-State-Model

  • Running - 모든 resources와 Cpu에 대한 권한 가지고 있음
  • Ready - 모든 resources는 가지고 있지만 Cpu에 대한 권한을 가지고 있지 않음
  • Blocked - 모든 resources와 Cpu에 대한 권한이 없음

그림을 보며 설명해보자면 P1, P2, P3가 있다고 가정하자
P1이 실행중일 때는 Running-state에 있으며 P2와 P3는 Ready-State(Queue에 대기)에 있다.
그리고 I/O에 요청이 들어온다면 Blocked-state가 된다.
여기서 I/O에 입력이나 출력이 끝난닥 해도 Running-state로는 가지 못한다
Why ? Blocked-state는 수행을 위한 resource가 없기 때문에 Ready-State만 갈 수 있다 !

4-2. 5-State-Model

  • New(Creation) - Process를 생성, 아직 Ready 되지 않은 상태 즉, Program이 memory에 올라왔지만 수행에 필요한 resource가 없다. 수행할 준비가 되면 Ready-state로 간다.
  • Exit(Terminated) - 중지나 중단이 되어 OS에 의해 방출된 프로세스 즉, 수행할 Data와 resource가 없음 -> memory에서 Disk로 옮겨짐 -> PCB, 관련 DS 모두 사라짐
  • PCB: OS가 Process를 관리하기 위한 정보를 넣어두는 것
  • Zombie / Orphan state : 다 사라졌지만 OS는 해당 정보를 가지고 있는 상태

running state에서 ready state로 가는 걸 preemption이라고 한다.
지금 수행하는 걸 멈추는 건 맞지만 running에서 ready로 옮기라는 뜻이며 옮길 수 있다면 preemptive하다고 말한다.

4-3. 7-State-Model

Main memory의 수용량이 더 많은 process를 들고 있기에는 불충분할 경우 Swapping을 한다.
Swapping : 메인 메모리(주 기억장치)로부터 디스크(보조 기억장치)로 프로세스의 일부 혹은 전체를 옮기는 것을 의미한다.

  • Suspend : memory에 용량이 부족하여 새로 load를 하지 못해 Memory에서 지금 당장 사용할 필요가 없거나 중요한 것이 덜한 process를 OS가 선택해서 Disk로 보냄

  • ready에 있는 process보단 blocked에 있는 process를 빼는 것이 reasonable

  • Memory와 Disk에 접근횟수를 줄이기 위해서 Disk에 위치한 Swap space를 사용 (접근 속도가 느림)

5. Process State Tracking


3 에서 I/O 요청
6 에서 I/O 도착
8 에서 끝나거나 Time slice 다 씀

6. PCB: Data Structure

The OS has some key data structures that track various relevant pieces of information about individual process
OS는 각 Process에 대한 정보를 추적하는 자료구조를 가지고 있다. (PCB)

  • PID(Process Identification Number) - 이름

  • Process state : running, blocked

  • Program counter : location of instruction to next execute

  • CPU registers : contents of all process - centric registers

  • Scheduling information - 우선순위

    • process priority, scheduling parameters ...
  • Memory management information - 메모리가 어디에 있는지 알아야 함

    • Base/limit registers, page tables ...
  • I/O status information - 어떤 IO를 사용하였는지

    • List of I/O devices allocated, list of open files ...
  • Accounting information

    • CPU used, clock time elapsed since start, time limits ...
  • Context save area

    • Space for saving register context of the process
profile
반갑습니다.

0개의 댓글