Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions week2/chapter3_Process/split.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@

- **프로세스는 능동적인 존재이다.**
- 프로세스 현재 상태를 나타내는 값
- 프로그램 카운터 값 : 다음에 실행할 명령어의 위치를 가르키는 값
- 프로세스 레지스터 : 프로세스를 실행하며 필요한 여러 정보
- 프로그램 카운터 값 : 다음에 실행할 명령어의 위치를 가르키는 값
- 프로세스 레지스터 : 프로세스를 실행하며 필요한 여러 정보
- 두 프로세스가 동일한 프로그램에 연관될 수 있지만 두개의 별도의 실행 순서로 간주합니다.
---
### **프로세스 메모리 배치**
![](./image/Untitled.png)
- TEXT 섹션 : 실행 코드
- DATA 섹션 : 전역 변수
- HEAP 섹션 : 프로그램 실행 중 동적으로 할당되는 메모리 공간
- STACK 섹션 : 함수 호출시 사용되는 임지 데이터 저장 장소
- 함수 호출시 활성화 레코드가 스택에 푸시 된다.
- 매개변수, 복귀 주소, 반환 값, 지역변수 등등
- STACK 섹션 : 함수 호출시 사용되는 임시 데이터 저장 장소
- 함수 호출시 활성화 레코드가 스택에 푸시 된다.
- 매개변수, 복귀 주소, 반환 값, 지역변수 등등

| 메모리 영역 | 크기가 고정됨 |
| :-: | :-: |
Expand Down Expand Up @@ -110,12 +110,12 @@ CPU 코어를 다른 프로세스로 교환하기 위해 이전 프로세스의
1. 시스템이 부팅되면 첫번째 사용자 프로세스로 systemd 프로세스가 생성된다.
2. systemd 프로세스가 루트 부모 프로세스 역할을 가지며 다양한 사용자 프로세스를 생성한다.
- 자식 프로세스를 생성할 때 운영체제로부터 자원을 직접 얻거나 부모 프로세스의 자원의 일부분만을 사용할 수 있다.
- 부모와 자식에게 초기화 데이터를 전달할수 있다.
- 부모, 자식에게 초기화 데이터를 전달할수 있다.
- 부모 프로세스에서 fork() 를 사용하기에 자식 프로세스는 부모 똑같은 프로그램과 데이터를 가지게 된다.
- fork() : 프로세스가 자신의 주소 공간의 복사본을 이용하여 새로운 프로세스를 생성한다.
- exec() 를 호출시 프로세스가 주소 공간을 새 프로그램을 덮어쓴다.
- exec() : 적재된 프로그램의 메모리 이미지를 파괴한 뒤 이진 파일을 메모리에 적재하고 실행한다. 오류가 발생하지 않는 한 제어를 반환하기 않는다.
- 자식이 실행하는 동안 할 일이 없을 경우 자식이 종료될 때까지 준비 큐에서 자신을 제거하기 위해 wait() 시스템 콜을 한다.
- **자식이 실행하는 동안 할 일이 없을 경우 자식이 종료될 때까지 준비 큐에서 자신을 제거하기 위해 wait() 시스템 콜을 한다.**

**프로세스 실행 방식 종류**
1. 자식과 같은 코드를 병행하게 실행을 계속한다.
Expand All @@ -133,7 +133,7 @@ CPU 코어를 다른 프로세스로 교환하기 위해 이전 프로세스의
- 운영체제에서 부모가 종료될 때 자식도 종료되게 강제할 때 ( 연쇄식 종료 )
- 부모 프로세스가 wait() 을 호출할 때까지 프로세스 테이블에 종료 상태가 저장되어 있는데 종료되었지만 부모가 wait() 호출을 하지 않아 프로세스 테이블에 남아있는 프로세스를 좀비 프로세스라고 한다.
- 모든 프로세스는 좀비 상태가 되지만 짧은 시간만 머무른다.
- 만약 프로세스가 wait() 을 호출하지않고 종료된다면 이 좀비 프로세스는 고아 프로세스가 된다.
- 만약 프로세스가 wait() 을 호출하지 않고 종료된다면 이 좀비 프로세스는 고아 프로세스가 된다.
- 전통적인 UNIX는 고아 프로세스의 부모로 init 프로세스를 지정하고 init 프로세스는 주기적으로 wait() 하여 종료 상태를 수집하고 PID 와 프로세스 테이블 항목을 반환한다. ( Linux : systemd )
# 프로세스 간 통신( Interprocess Communication )
운영체제 내에서 병행 프로세스들은 독립적이거나 협력적인 프로세스들이다.
Expand Down Expand Up @@ -188,7 +188,7 @@ CPU 코어를 다른 프로세스로 교환하기 위해 이전 프로세스의
- 통신하는 두 프로세스 간에 부모 자식과 같은 특정 관계가 존재해야 하는지
- 파이프는 네트워크를 통하여 통신이 가능한지, 동일한 기계 안에서만 가능한지
### 일반 파이프
생산자-소비자 형태로 두 프로세스 간의 통신을 허용하고 단방형 통신만 가능하다. 프로세스들이 통신하는 동에만 존재하며 통신을 마치고 종료하면 사라진다.
생산자-소비자 형태로 두 프로세스 간의 통신을 허용하고 단방형 통신만 가능하다. 프로세스들이 통신하는 중에만 존재하며 통신을 마치고 종료하면 사라진다.
- 부모 프로세스가 파이프를 생성하고 fork() 로 생성한 자식 프로세스와 통신하기 위해 사용한다.
- 처음에 두 프로세스 모두 파이프의 양 끝을 사용할 수 있기에 사용하지 않는 끝을 닫는다.
- 생산자 : 파이프의 한쪽 끝에서 데이터를 쓴다.
Expand Down
4 changes: 2 additions & 2 deletions week2/chapter4_Threads&Concurrency/split.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

## 2-1. 프로그래밍 도전과제
다중 코어 시스템을 위해 프로그래밍하기 위해 극복해야할 도전 과제들이 있다.
1. 테스크 인식 : 응용 프로그램을 분석하여 독립된 병행 가능 테스트로 나눌 수 있는 영역을 찾아야 한다.
1. 테스크 인식 : 응용 프로그램을 분석하여 독립된 병행 가능 테스크로 나눌 수 있는 영역을 찾아야 한다.
2. 균형 : 전체 작업이 균등한 기여도를 가지도록 테스크를 나눈다. 기여도가 낮은 작업을 위해 별도의 코어를 사용하는 것은 가치가 없다.
3. 데이터 분리 : 테스크가 접근하고 조작하는 데이터 또한 개별 코어에서 사용할 수 있도록 나누어져야 한다.
4. 데이터 종속성 : 데이터가 둘 이상의 테스크 사이에 종속성이 없는지 검토해야 한다.
Expand Down Expand Up @@ -97,7 +97,7 @@ macOS, IOS 운영체제를 위해 애플에서 개발한 기술로 개발자가
## 6-1. Fork(), Exec() 시스템 콜
**한 프로그램의 스레드가 fork() 를 호출시**
1. 모든 스레드를 복제해야 해서 새 프로세스를 만드는 경우
- 만약 fork 후에 exec 를 하지 않는다면 모든 스레드들을 복제해야 한다.
- 만약 fork 후에 exec 를 하지 않는다면 모든 스레드들을 복제해야 한다.
2. 한개의 스레드만 가지는 새 프로세스를 만드는 경우
- 만약 fork 이후 exec 를 한다면 exec 에서 지정한 프로그램이 다시 대체할 것이기 때문에 모든 스레드를 복제할 필요가 없다.
## 6-2. 신호 처리
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added week3/chapter5_CPU_scheduling/image/Untitled.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading