[운영체제 학습 노트] 프로세스와 스레드, 프로세스 관리

2023. 5. 1. 21:47·정리 전 게시글/공부 관련

프로세스

프로그램과 프로세스의 차이

프로그램: 저장장치에 저장된 실행 가능한 파일

프로세스: 프로그램이 메모리에 적재되어 실행중일 때

 

 

운영체제의 프로세스 관리

1. 운영체제는 프로그램을 메모리에 적재하고 프로세스로 다룬다.

2. 프로세스들은 독립적인 메모리 공가늘 가지며 다른 프로세스의 영역에 접근할 수 없다.

3. 운영체제는 프로세스마다 고유한 번호 PID를 할당받는다.

4. 프로세스 정보는 커널에 의해 관리된다.

5. 운영체제 커널은 시스템 전체에 하나의 프로세스 테이블을 두고 모든 프로세스를 관리한다.

6. 프로세스를 실행할 때 프로세스제어블록 PCB를 생성하여 프로세스 정보를 저장한다.

 

구성

1. 코드영역

2. 데이터영역

3. 힙영역

4. 스택영역

프로세스 주소 공간 = 사용자 공간 + 커널 공간
프로세스가 실행중 접근할 수 있는 최대 주소 범위

 

프로세스 제어 블록(PCB)

정의

프로세스의 핵심 데이터(프로세스 번호, 부모프로세스 번호, 컨텍스트, 종료코드, 프로세스 스케줄링 정보, 회계정보 등등)

컨텍스트: 현재 실행중인 프로그램 일체의 상태. 컨텍스트 스위칭될 때 저장되는 정보는 PC, SP등의 레지스터이다
프로세스 스케줄링: CPU에 할당하기 위해 Ready 상태의 프로세스를 고르는 과정

 

프로세스 상태변이

New -> Ready -> Running -> Terminated/Zombie -> Terminated/Out

                                  ↓

                 ↑    ←   Blocked

 

 

기아 프로세스

정의

Ready 상태일 때 문제가 생겨서 준비큐에 오래 머무르는 상태

 

Zombie 프로세스

정의

종료코드를 부모 프로세스에서 읽지 않아 리소스는 반한되었지만 PCB는 커널에 존재하여 시스템(프로세스 테이블)에 남아있는 완전히 종료되지 않은 상태

 

 

고아 프로세스

정의

부모 프로세스가 자식프로세스보다 먼저 종료되었을 때

 

#0 프로세스

Swapper, idle 프로세스라고도 불림

컴퓨터가 실행되면 가장 먼저 실행되며

부팅을 담당하고 시스템에 실행시킬 Ready 프로세스가 1개도 없는 상태를 방지하기 위함

 

#1 프로세스

init 프로세스라고도 불림

 

프로세스의 문제점

1. 프로세스 생성의 큰 오버헤드로 인해 많은 시간이 걸린다.

2. 프로세스 컨텍스트 스위칭의 큰 오버헤드

3. 프로세스 사이의 통신이 어렵다

 

=> 이같은 문제점을 해결하기 위해 스레드 출현

 

 

스레드 

목적

1. 프로세스 보다 작은 실행단위 필요

2. 프로세스 생성 및 삭제에 따른 오버헤드 감소 필요

3. 빠른 컨텍스트 스위칭

4. 프로세스간의 통신의 어려움 해결

 

정의

프로세스보다 작은 실행단위로서 작업을 구현하는 단위이자 운영체제에 의해 스케줄링 되는 단위

1. 스레드는 실행단위이며 스케줄링 단위이다.
2. 프로세스는 스레드들의 컨테이너이다
3. 프로세스는 스레드들의 공유공간을 제공한다
멀티스레딩: 여러 스레드를 동시에 실행시킴으로서 cpu 활용률을 높인다.

 

다수의 스레드가 실행되는 상황

1. 동시성, 동시 처리(Concurency)

1개의 CPU로 2개 이상의 스레드를 시간을 나누어 실행

 

2. 병렬성, 병렬처리(Paramelism)

2개 이상의 스레드가 2개 이상의 CPU에서 실행

 

스레드 제어 블록(TCB)

구성

1. 스레드 정보 (스레드 고유 번호 TID, 실행, 준비, 블록과 같은 상태를 저장 State)

2. 컨텍스트: cpu가 스레드를 실행하고 있을 때 cpu의 레지스터 값

3. 스케줄링 정보

 

스레드 컨텍스트 스위칭이 발생하는 경우

1. 스레드가 자발적으로 다른 스레드에게 양보하는경우

2. 시스템 호출이 실행된경우

3. 스레드가 타임슬라이스를 소진하는경우

4. 인터럽트가 발생하는경우

 

커널 레벨 스레드

정의

커널에 의해 만들어지고, 커널에 의해 존재가 인지되고, 커널에 의해 스케줄링 되는 스레드

병렬성, 느리다, 커널 모드에서 스레드 스위칭

 

사용자자 레벨 스레드

정의

스레드 라이브러리에 의해 사용자 공간에 생성 및 관리되고 스케줄링 되는 스레드

동시성, 빠르다, 사용자 모드에서 스레드 스위칭

 

저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

[인공지능 학습 노트] 파이썬 UCS 구현 상태 공간 그래프에 대한 균일 비용 탐색 알고리즘  (0) 2023.05.01
[운영체제 학습 노트] 스레드 매핑, 스케줄링 기법 라운드로빈, 스레드 동기화  (0) 2023.05.01
[운영체제 학습 노트] 운영체제와 커널의 자원 독점 관리, 자원 접근의 문제점  (0) 2023.05.01
[백준 1181번 문제, python] 단어 정렬  (0) 2023.04.07
[백준 1152번 문제, C] 단어의 개수  (0) 2023.04.02
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [인공지능 학습 노트] 파이썬 UCS 구현 상태 공간 그래프에 대한 균일 비용 탐색 알고리즘
  • [운영체제 학습 노트] 스레드 매핑, 스케줄링 기법 라운드로빈, 스레드 동기화
  • [운영체제 학습 노트] 운영체제와 커널의 자원 독점 관리, 자원 접근의 문제점
  • [백준 1181번 문제, python] 단어 정렬
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (277)
      • f1tenth (2)
      • 개발 관련 아무거나 (1)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    C언어
    공개SW개발자대회
    백준
    반복하지않는수
    티스토리HTML
    자바
    마인크래프트스크립트
    파이어베이스
    이것이자바다
    C언어강좌
    스크롤바CSS
    티스토리반응형2스킨편집
    일본규슈공업대학교
    컨텍스트스위칭
    이것이자바다확인문제
    프로그래머스
    프로그래머스PCCE
    콜라츠추측
    캡스톤디자인
    빅데이터공모전
    이것이자바다연습문제
    마크스크립트
    c언어초보
    안드로이드
    마크
    C++강좌
    티스토리스킨편집
    마인크래프트강화스크립트
    파이썬
    마인크래프트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[운영체제 학습 노트] 프로세스와 스레드, 프로세스 관리
상단으로

티스토리툴바