[OS] Process

2024. 3. 28. 00:14·OS

프로세스

: 실행 중인 프로그램

: 프로그램이 실행되는 것을 추상화한 것

 

  • 시분할(time sharing): 원하는 수만큼 프로세스를 동시에 실행할 수 있게 하는 기법
  • 주소 공간(address space): 프로세스가 접근할 수 있는 메모리
  • 프로세스의 하드웨어 상태를 구성하는 레지스터
    • 프로그램 카운터(PC): 프로그램의 어느 명령어가 실행 중인지 알려준다.
    • 명령어 포인터(IP): 프로그램 카운터와 같은 의미, 명령어를 불러와 해독한다.
    • 스택 포인터, 프레임 포인터: 함수의 변수와 리턴 주소를 저장하는 스택을 관리할 때 사용하는 레지스터

 

프로세스 API - System Call

1. 생성 (Create)

  • fork
    • 새로운 프로세스 생성(자식 프로세스)
    • 물리적 공간에서 메모리 복사 수행
    • 부모 프로세스와 자식 프로세스가 완전히 동일하지는 않다.
      • 고유한 PID
    • fork로부터 부모 프로세스는 자식 프로세스의 PID, 자식 프로세스는 0을 반환 받는다.

2. 제거 (Destory)

3. 대기 (Wait)

  • wait
    • 부모 프로세스의 실행을 잠시 중지
    • 순서가 정해진다. (자식 프로세스 먼저 실행 후 부모 프로세스 실행)
    • 자식 프로세스의 exit status 값을 가져오는 역할도 한다.

4. 각종 제어 (Miscellaneous Control)

  • exec
    • 다른 프로그램 실행
    • fork로 생성된 실행 환경에 다른 명령을 실행하도록 한다.

5. 상태 (Status)

 

프로세스 상태

  • 실행(Running): CPU에 의해 프로그램이 처리되고 있는 상태
  • 준비(Ready): 프로그램이 메모리에 탑재되고 실행할 준비도 됐지만 사용할 CPU가 없어서 실행되지 못하는 상태
  • 대기(Blocked): CPU가 메모리 영역을 벗어난 상태(ex. I/O 요청 등)일 때 프로세스의 수행을 중단하는 것

 

  • 커널(Kernel)
    • System Call 처리
    • 장치를 효율적으로 쓸 수 있게 관리
    • 프로세스를 총괄해서 관리
  • PCB(Process Control Block): 프로세스의 관리를 위한 정보를 저장하는 자료구조
    • Context: 프로세스를 중단하고 재개하기 위해(실행흐름을 잘 이어주기 위해) 정보를 저장하고 복원하는 레지스터

 

기법

LDE (제한적 직접 실행 원리)

- 프로그램을 CPU 상에서 직접 실행시키는 것
- 프로그램 시작 시 프로세스 목록에 해당 프로세스 항목을 만들고 메모리를 할당하며 프로그램 코드를 디스크에 탑재하고 진입점을 찾아 그 지점으로 분기하여 사용자 코드를 실행
  • trap 명령어: 커널 모드로 진입하기 위한 명령어
  • return-from-trap: 사용자 모드로 돌아가기 위한 명령어
  • 사용자 모드(user mode)
    • 할 수 있는 일이 제한된다.
  • 커널 모드(kernel mode)
    • 모든 작업을 수행할 수 있다.
    • 특권 명령어
  • 시스템콜(System Call)
    • 사용자 프로세스에게 제한 작업의 실행을 허용하기 위해 제공
  • 트랩 핸들러(trap handler)
    • Exception: CPU-Memory 사이의 내부 에러
    • ex) %0, page fault
    • Interrupt: 외부 에러, 외부 기계 장치에 의한 에러
    • System Call: SW trap
  • 문맥 교환(Context Switch): 현재 실행 중인 프로세스의 레지스터 값들을 커널 스택 같은 곳에 저장하고 새로이 실행될 프로세스의 커널 스택으로부터 레지스터 값을 복원하는 것

 


※ 국민대학교 소프트웨어학부 황선태 교수님의 운영체제 교과목을 공부하며 정리한 내용입니다.

728x90
반응형

'OS' 카테고리의 다른 글

[OS] Paging  (0) 2024.03.30
[OS] Free-Space Management  (1) 2024.03.29
[OS] Segmentation  (1) 2024.03.29
[OS] Address Space & Address Translation  (2) 2024.03.29
[OS] Scheduling  (5) 2024.03.28
'OS' 카테고리의 다른 글
  • [OS] Free-Space Management
  • [OS] Segmentation
  • [OS] Address Space & Address Translation
  • [OS] Scheduling
nueos
nueos
  • nueos
    nueos 공부 기록
    nueos
  • 전체
    오늘
    어제
    • 분류 전체보기 (193)
      • 해커톤 (1)
      • 네이버 BoostCamp (6)
      • LG 유플러스 유레카 SW (5)
        • React (21)
        • TypeScript (2)
        • JavaScript (2)
        • HTML+CSS (5)
        • Spring (7)
        • Java (6)
        • SQL (2)
        • Algorithm (8)
        • CX (6)
        • Git (2)
        • 프로젝트 (2)
        • 스터디 (9)
        • 과제 (8)
        • 특강 (1)
      • React (3)
      • Next (0)
      • Javascript (2)
      • HTML (2)
      • CSS (9)
      • Algorithm (6)
      • Database (0)
      • OS (13)
      • C++ (24)
      • Python (1)
      • jQuery (1)
      • Django (1)
      • Git (1)
      • 개발 지식 (3)
      • 정보 보안 (22)
      • 포렌식 (1)
      • 암호 (2)
      • 기타 (4)
      • 패스트캠퍼스 FE 프로젝트십 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    제주지역혁신플랫폼지능형서비스사업단
    큐
    완전 탐색
    디지랩챌린지
    힙
    Stack
    exhaustive search
    Queue
    heap
    제주해커톤
    스택
    기술로바꾸는세상
    디지털혁신
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
[OS] Process
상단으로

티스토리툴바