📓STUDY/OS

[OS/운영체제/공룡책 붓츠부스] 2. 프로세스란?

2024. 2. 6. 17:14
목차
  1. Process
  2. 프로세스의 생명주기
  3. PCB(Process Control Block)
  4. Thread
  5. Multi-programming
  6. Time sharing
  7. Process Scheduling
  8. Scheduling Queues
  9. Context switch
  10. Fork
  11. 프로세스의 실행
  12. 프로세스의 주소 공간
  13. fork
  14. exec()/ execlp()

Process

현재 실행중인 프로그램을 프로세스라고 하며, 운영체제에서 작업의 단위를 프로세스라 한다.

  • text : 컴파일된 소스 코드가 저장되는 영역
  • data : 전역 변수나 초기화된 데이터가 저장되는 영역
  • stack : 함수의 매개변수, 복귀 주소, 로컬 변수 등의 임시 데이터가 저장되는 영역
  • heap : 프로세스 실행 중에 동적으로 할당되는 메모리가 저장되는 영역

 

프로세스의 생명주기

  • New : 프로세스가 생성되어 메인메모리에 올라온 상태
  • Running : CPU가 실제로 프로세스를 수행하고 있는 상태
  • Waiting : 프로세스 도중에 I/O 작업을 수행하는 상태로 CPU가 I/O작업의 완료를 기다리는 시기
  • Ready : 변수 초기화 등 기초 준비작업을 모두 끝나고 실행을 할 수 있는 상태
  • Terminated : 최종적으로 프로세스가 종료된 상태, 사용하던 메모리 영역 해제

 

PCB(Process Control Block)

PCB는 각 프로세스에 대한 다양한 정보를 담고 있는 데이터 자료구조

  • 프로세스 식별자(Process ID, PID) : 프로세스 식별번호
  • 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장
  • 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소
  • CPU 레지스터
  • CPU 스케쥴링 정보 : 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등
  • 메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
  • 입출력 상태 정보 : 프로세스에 할당된 입출력 장치들과 열린 파일 목록
  • 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등

 

Thread

프로세스의 실행단위로, 하나의 프로세스 안에 여러개의 쓰레드를 실행시킬 수 있다.

Multi-programming

동시에 하나 이상의 프로세스를 실행하는 것 ⇒ Concurrency

Time sharing

멀티 태스킹이라고도 하며, CPU가 스케줄링을 통해 작업들을 빠르게 switching하면서 마치 동시에 작업들이 수행되는 것처럼 느껴지게 하는 것이다.


Process Scheduling

Scheduling Queues

  • 프로세스가 시스템에 들어오면 잡 큐(Job queue)에 들어간다. 잡 큐는 시스템의 모든 프로세스로 구성되어있다.
  • 메인 메모리에서 실행을 기다리는 ready 상태의 프로세스들은 레디 큐(Ready queue)에 쌓인다.
  • 특정한 event가 발생하기를 기다리고 있는 프로세스들은 웨이트 큐(Wait queue)에 들어간다.
  • 입출력 장치를 기다리는 프로세스들은 디바이스 큐(Device queue)로 들어간다.
  • 이러한 큐들은 PCB의 Linked List들로 이루어져있다.

 

Context switch

현재 진행하고 있는 task의 상태를 저장하고 다음 진행할 task의 상태 값을 읽어 적용하는 과정을 의미함

  • Task의 대부분 정보는 register에 저장되고 PCB로 관리되고 있음
  • 현재 실행하고 있는 Task의 PCB 정보를 저장하고
  • 다음 실행할 Task의 PCB정보를 읽어 register에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행할 수 있음

 

Fork

fork() 라는 시스템 콜을 호출하여 프로세스를 생성할 수 있다.

parent → child 트리형태로 프로세스가 생성된다.

  • Zombie process : 자식 프로세스가 부모 프로세스보다 먼저 죽는 경우에, 부모 프로세스가 wait함수를 호출하지 않아 자식 프로세스가 완전히 소멸되지 못하고 남아있게 되는 경우
  • Orphan process : 부모프로세스가 자식 프로세스보다 일찍 종료됨.

프로세스의 실행

  1. 부모 프로세스와 자식 프로세스가 동시에 실행된다. (멀티프로세싱환경)
  2. 부모 프로세스는 자식 프로세스들이 종료될 때까지 기다린다.(→ waiting queue)

프로세스의 주소 공간

  1. 자식 프로세스가 부모 프로세스의 주소 공간을 복사한다.
  2. 자식 프로세스가 별도의 프로그램을 적재한다.

 

fork

  • 자식 프로세스는 0을 리턴
  • 부모 프로세스는 자식 프로세스의 식별자(pid)를 리턴

 

exec()/ execlp()

  • 프로세스를 새로운 프로그램을 실행하는 프로세스로 대체하는 시스템 콜 함수
  • 현제 프로세스의 프로그램 코드를 새로운 프로그램 코드로 바꿔준다.
  • 따라서 반환 값은 없다.
728x90
저작자표시 (새창열림)

'📓STUDY > OS' 카테고리의 다른 글

[OS/운영체제/공룡책 붓츠부스] 프로세스 간 통신  (0) 2024.03.20
[OS/운영체제/공룡책 붓츠부스] 1. 운영체제란?  (0) 2023.04.25
  1. Process
  2. 프로세스의 생명주기
  3. PCB(Process Control Block)
  4. Thread
  5. Multi-programming
  6. Time sharing
  7. Process Scheduling
  8. Scheduling Queues
  9. Context switch
  10. Fork
  11. 프로세스의 실행
  12. 프로세스의 주소 공간
  13. fork
  14. exec()/ execlp()
'📓STUDY/OS' 카테고리의 다른 글
  • [OS/운영체제/공룡책 붓츠부스] 프로세스 간 통신
  • [OS/운영체제/공룡책 붓츠부스] 1. 운영체제란?
두_두
두_두
피할 수 없으면 냅다 즐겨버리기 💚
두_두
왜안되지
두_두
전체
오늘
어제
  • 분류 전체보기 (96)
    • 🌐 웹개발 (30)
      • React (4)
      • 웹 개발 (17)
      • API (3)
    • 💡코딩테스트 (56)
      • 프로그래머스 (49)
      • Leetcode (4)
      • 백준 (3)
    • 📓STUDY (10)
      • 알고리즘 (5)
      • OS (3)
      • 네트워크 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 쉿🤫 두_두는 블로그 이사중🚛

인기 글

태그

  • Python
  • set
  • 코딩테스트
  • github pages
  • 코테
  • 컨텍스트
  • JS
  • 파이썬
  • JavaScript
  • 제이쿼리
  • nuxt
  • 공룡책
  • 개발
  • 리트코드
  • 그리디
  • 리액트
  • leetcode
  • BFS
  • 뷰
  • 그래프
  • 자바스크립트
  • jQuery
  • programmers
  • dfs
  • 프로그래머스
  • DP
  • vue
  • deque
  • Github
  • react

최근 댓글

최근 글

hELLO · Designed By 정상우.
두_두
[OS/운영체제/공룡책 붓츠부스] 2. 프로세스란?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.