ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4. Process
    CS/OS 2022. 4. 27. 20:49

    Multi Tasking( Multi Processing )

    운영체제(OS)를 통해 여러 프로세스(프로그램)를 실행하고 관리 ( UNIX / WINDOW )
    즉, OS를 통해 CPU가 작업하는데 필요한 자원(시간)을 프로세스 또는 스레드간에 나누는 행위

    E.g) Multi Tasking

    Multi User -> UNIX / NT SEVER

    UNIX =C언어로 작성 / Kernel 구조 / 확장성

    Process


    프로그램이 실행 중이라는 것은 디스크에 저장되어 있던 프로그램을 메모리에 저장한 뒤 운영체제의 제어를 받을 수 있는 상태가 된 것을 의미
    메인 메모리에 할당되어 실행중인 상태인 프로그램
    프로세스는 job, task 등으로 불리기도 한다.

    메모리 구조

    Stack , Heap , Data , Code로 구성

    Process Memory

    1. STACK

    - 데이터를 일시적으로 저장하는 영역

    - 지역 변수를 저장 및 호출한 함수의 반환 주소, 반환 값, 매개 변수 사용

     

    2. HEAP

    - 동적으로 메모리를 할당

     

    3. Data

    - 프로그램이 실행될 때 생성되고 종료되면 시스템에 반환

    - 전역 변수나 정적 변수를 저장하거나 할당

    - Data : 초기화 된 데이터

    - Bss : 초기화되지 않은 데이터

     

    4. Code

    - 프로그램의 코드 자체를 저장하는 영역

    - 기계어로 제어되는 메모리 영역

    - 읽기 전용이기 때문에 프로그램이 쓰기를 시도하면 오류가 발생

     

    프로세스의 종류


    1. 커널 프로세스

    모든 시스템 Resource(메모리, CPU .. ) 의 명령에 액세스할 수 있는 프로세스

     

    2. 사용자 프로세스

    사용자 코드를 수행하는 프로세스

     

    프로세스 State 단계 변화


    Process 5 State

    Dispatch ( Ready -> Running )

    Ready Queue에 있는 프로세스 중 하나를 선택하여 CPU(Processor)에 할당

    Timeout ( Running -> Ready )

    하나의 프로세스가 오랜 기간동안 동작하는 것을 방지하고자, 할당된 시간 만큼만 점유하도록 한다.
    TimerInterrupt를 발생시켜 다음 프로세스를 동작하도록 만든다.

    Block ( Running -> blocked )

    프로세스를 실행하다가 입출력 명령(Hardware Interrupt) or 이벤트(System Call)가 발생하면 프로세서를 스스로 반납하고 Wait State로 변경

    WakeUp ( Blocked -> Ready )

    Ready state -> return Interrupt/ System call(User mode)  -> State = Wait -> Ready

     

     

    PCB ( Process Control Block ) = TCB ( Task Control Block )


    특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 Process Management 내 자료구조
    PCB는 운영 체제가 프로세스를 표현한 것
    운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스를 PCB
    운영체제에서 프로세스는 PCB로 나타내어지며, PCB는 프로세스에 대한 중요한 정보를 가지고 있는 자료
    각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거됩니다.

    PCB

    1) 프로세스 식별자(Process ID)

    2) 프로세스 상태(Process State) : 생성(New), 준비(Ready), 실행 (Running), 대기(Waiting), 완료(Terminated) 상태가 있습니다.

    3) 프로그램 계수기(Program Counter) : 프로그램 계수기는 이 프로세스가 다음에 실행할 명령어의 주소를 가리킵니다.

    4) CPU 레지스터 및 일반 레지스터

    5) CPU 스케줄링 정보 : 우선 순위, 최종 실행시각, CPU 점유시간 

    6) 메모리 관리 정보 : 해당 프로세스의 주소 공간 등

    7) 프로세스 계정 정보 : 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등

    8) 입출력 상태 정보 : 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등

    9) 포인터 : 부모프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터, 할당된 자원에 대한 포인터 정보 등.

     

    Process Queue


    Process Queue

    Job Queue(Long-term scheduler): 하드디스크에 있는 프로그램이 실행되기 위해 메인 메모리의 할당 순서를 기다리는 큐이다.

    Ready Queue(Short-term scheduler): CPU 점유 순서를 기다리는 큐이다.

    Device Queue: I/O를 하기 위한 여러 장치가 있는데, 각 장치를 기다리는 큐가 각각 존재한다.

    Context Switching


    하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업
    스케줄러(Short-term Scheuler) 에 의해 발생

     

    'CS > OS' 카테고리의 다른 글

    XV6 - 이론 정리_1  (0) 2022.05.13
    3. Dual Mode / System Call / OS Service  (0) 2022.05.11
    2.OS 역사  (0) 2022.05.06
    1. 운영체제(OS)란?  (0) 2022.05.06
    6. Thread  (0) 2022.04.27

    댓글

Designed by Tistory.