Skip to content

Commit

Permalink
Merge pull request #12 from Yujin-Baek/main
Browse files Browse the repository at this point in the history
10장_프로세스와 스레드_백유진.md 파일 수정
  • Loading branch information
Yujin-Baek authored Sep 4, 2023
2 parents 8ed5cda + fb13817 commit 3fae751
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 22 deletions.
54 changes: 35 additions & 19 deletions 2주차/10장/10장_프로세스와 스레드_백유진.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# 10장. 프로세스와 스레드

# 10-1 프로세스 개요

## 프로세스란?

실행 중인 프로그램
<br/>

## ‘프로세스를 생성한다’는 것은?

Expand All @@ -29,14 +30,16 @@ ex. hwp.exe 파일은 프로세스가 아님 → hwp.exe 프로그램을 더블
## PCB(Process Control Block)란?

프로세스와 관련된 정보를 저장하는 자료 구조
<img width="480" alt="1" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/9fa86a28-ed50-4d93-a293-ffdfee1da948">

<img width="500" alt="1" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/19f94be2-47e6-4697-ad85-8b557566e476">

- PCB는 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기됨
- PCB는 커널 영역에 생성됨
- 운영체제가 프로세스에 필요한 자원을 배분하기위해 프로세스를 식별해야 하는데 그러기 위해 사용하는 것이 PCB

## PCB에 저장되는 정보
<img width="537" alt="2" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/a1725482-3cb7-4c07-9c22-989b1d204b19">

<img width="500" alt="2" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/61b93d6e-54e0-43b2-9949-3a1b51c2bf84">

### 1. 프로세스 ID(PID)

Expand All @@ -63,21 +66,23 @@ ex. hwp.exe 파일은 프로세스가 아님 → hwp.exe 프로그램을 더블
- 프로세스에 할당되었던 입출력장치나 파일에 대한 내용이 저장됨

## 문맥 교환(Context Switch)이란?
<img width="476" alt="3" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/dc35d4ae-a09c-498f-8eb8-208618a9cd23">

<img width="500" alt="3" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/ca35d2c2-9427-4210-bcf7-67a57a2a07d0">

- 기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구해 새로운 프로세스를 실행하는 것
- 하나의 프로세스를 실행하다가 다른 프로세스로 실행 순서가 넘어갈 때 문맥 교환이 일어남
- 문맥 교환이 너무 자주 일어나면 오버헤드가 발생할 수 있음

<img width="329" alt="4" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/3475e4f4-388f-49d6-9f9f-4944a3d61686">
<img width="500" alt="4" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/ff589bec-20db-4987-afdb-89bb03c9b401">

### 📌 문맥(Context)이란?

- 하나의 프로세스를 다시 실행하기 위해 저장되어야 할 정보
- PCB에 기록되는 정보들을 문맥이라고 생각하면 됨

## 프로세스의 메모리 영역
<img width="302" alt="5" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/a3bb56da-179a-44f0-99cb-326d6027d645">

<img width="500" alt="5" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/ac924387-c348-41ff-b9d8-f617792042f2">

### 1. 코드 영역(텍스트 영역)

Expand All @@ -103,16 +108,21 @@ ex. hwp.exe 파일은 프로세스가 아님 → hwp.exe 프로그램을 더블

- 일시적으로 사용되는 데이터가 저장됨
- 지역 변수가 대표적임

<aside>
✅ 코드 영역과 데이터 영역은 `정적 할당 영역`이라고도 부름
✅ 힙 영역과 스택 영역은 `동적 할당 영역`이라고도 부름

</aside>
<img width="335" alt="6" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/a179f181-e822-4501-be5b-f3a5a92d0be5">


<img width="500" alt="6" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/15565003-0cdc-4429-9b12-d7411c59d1a8">


# 10-2 프로세스 상태와 계층 구조

## 프로세스의 상태
<img width="496" alt="7" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/2d59c8fc-eef2-42a3-ba88-9049f93041f2">

<img width="500" alt="7" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/69d4de8d-a52f-4e3d-a4fa-ecf7eb378e40">

프로세스 상태 다이어그램

Expand Down Expand Up @@ -157,7 +167,7 @@ ex. hwp.exe 파일은 프로세스가 아님 → hwp.exe 프로그램을 더블
✅ 부모 프로세스와 자식 프로세스는 독립적인 프로세스이기 때문에 서로 다른 PID를 가짐

</aside>
<img width="586" alt="8" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/e9b3f3df-48af-4865-a2c3-0e3200896893">
<img width="500" alt="8" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/6bdbd13e-2d53-412d-bd15-4c74f367ceaa">

프로세스 계층 구조

Expand All @@ -169,16 +179,16 @@ ex. hwp.exe 파일은 프로세스가 아님 → hwp.exe 프로그램을 더블

- 부모 프로세스가 자신의 복사본을 생성하는 시스템 호출
- 부모 프로세스의 자원들이 자식 프로세스에 상속됨
<img width="537" alt="9" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/b8cef91e-547b-45a5-9cd4-81d1e8d76339">
<img width="500" alt="9" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/06cf84cc-3cf8-4540-9064-b13542b27a0a">


### 📌 exec란?

- 자신의 메모리 공간을 새 프로그램으로 덮어쓰는 시스템 호출
- 코드 영역과 데이터 영역의 내용이 실행할 프로그램의 내용으로 바뀌고, 나머지 영역은 초기화됨
<img width="576" alt="10" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/652a8157-fb1b-4685-9651-d37e3cffd7d4">
<img width="500" alt="10" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/be0439a7-c756-412a-9bc4-d10c00e94e4f">

<img width="374" alt="11" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/fee64b49-06c9-432e-9d59-c6a1e7bcd535">

<img width="500" alt="11" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/d02d8b23-cf5d-4174-8806-53052381d3dd">
<br>
<aside>
✅ 프로세스 계층 구조를 이루는 과정은 fork와 exec이 반복되는 과정임
Expand All @@ -196,12 +206,14 @@ ex. hwp.exe 파일은 프로세스가 아님 → hwp.exe 프로그램을 더블
### 📌 단일 스레드 프로세스란?

하나의 실행 흐름만을 가지는 프로세스
<img width="373" alt="12" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/62bb1d41-b408-4374-a992-c8820c08aa7b">

<img width="500" alt="12" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/1c3cdb80-771f-4c24-9290-2a66d0fa599d">

### 📌 멀티 스레드 프로세스란?

여러 개의 실행 흐름을 가지는 프로세스
<img width="370" alt="13" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/b1584aa6-f917-4239-bc51-1d525a9d31e2">

<img width="500" alt="13" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/04665871-8353-4e39-b674-77652f102ffc">

## 멀티프로세스와 멀티스레드

Expand All @@ -219,10 +231,14 @@ ex. hwp.exe 파일은 프로세스가 아님 → hwp.exe 프로그램을 더블
🤔 그렇다면 멀티프로세스와 멀티스레드 둘 다 여러 개의 실행 흐름을 가지고 실행하는데, 어떤 차이점이 있을까?

</aside>
<img width="569" alt="14" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/a9504abe-d044-4c6b-af90-2e5090d752f0">

<img width="500" alt="14" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/bbab4a2b-2522-4d8d-8e99-9feec9585871">

**프로세스는 다른 프로세스와 서로 자원을 공유하지 않음**
<img width="577" alt="15" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/4d1b7ed2-8b82-48f6-b373-a42cbe9fed3b">

<img width="500" alt="15" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/bce30092-e1c6-4f9c-8416-1bf9b382f348">


**스레드는 다른 스레드와 코드 영역, 데이터 영역, 힙 영역 등의 자원을 공유함**
<img width="561" alt="16" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/fd95929b-90e4-479f-b2cc-c45377f142a5">

<img width="500" alt="16" src="https://github.com/Yujin-Baek/computer-architecture-and-operating-system/assets/87238236/e1d8516e-0111-428d-a867-35c97dd981ac">
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ X장_제목_이름
## 🙋🏻 참여자

- 총 6명
- [김민지](https://github.com/kimhalin)
- [김민지](https://github.com/alswl020208)
- [곽소정](https://github.com/ssojungg)
- [백유진](https://github.com/rachel4w2)
- [백유진](https://github.com/Yujin-Baek)
- [유재윤](https://github.com/yoojaeyoonGit)
- [이동우](https://github.com/dongwooooooo)
- [임아정](https://github.com/ajaj0123)
- [임아정](https://github.com/Ajeong-Im)

<br>

Expand Down

0 comments on commit 3fae751

Please sign in to comment.