공유 자원 (Shared Resource) 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말합니다. 공동으로 이용되기에 누가 언제 데이터를 읽거나 쓰느냐에 따라 결과가 달라질 수 있습니다. 경쟁 상태 (Race Condition) 공유 데이터에 대해 여러 프로세스가 동시에 접근, 변경을 시도하는 상황을 말합니다. 데이터의 일관성을 유지하기 위해서 수행되는 프로세스들이 순차적으로 공유자원에 접근해야 합니다. 문제 상황 예시 (은행 입출금 문제) 프로세스 A와 B가 은행 잔고에 동시에 접근해서 둘 다 1000원을 읽었습니다. A는 500원을 입금했고 B는 뒤이어 500원을 출금했다면 잔고는 1000원이 저장돼야 하지만, B가 더 나중에 저장했으므로 500원이 저장됩니다. => 문제 발생 임계 ..
IPC (Inter-Process Communication) 프로세스는 독립적인 메모리 공간을 갖고 다른 프로세스에 의해 침범되지 못하기 때문에 프로세스 간 통신을 위해서 별도의 메커니즘이 필요합니다. (IPC) 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻합니다. Kernel에서 IPC를 위한 도구를 제공합니다. (System Call의 형태로 프로세스에 제공됨) IPC가 필요한 이유 서로 다른 프로세스들이 협력해서 동작하는 프로세스 협력 모델을 만들기 위해서는 데이터를 주고받아야 하는데 이를 위해서 필요합니다. IPC의 두 가지 모델 1. Shared Memory (공유 메모리) 공유 메모리는 서로 다른 프로세스가 메모리 일정 영역을 공유하는 방식으로 공유하는 영역..
CPU 스케줄링 메모리에 있는 여러 프로세스에게 어떤 식으로 CPU time을 할당을 해줄 것인지 정하는 것입니다. 멀티 프로그래밍을 기반으로 합니다. CPU 사용률, 처리량을 최대로 하는 것이 CPU 스케줄링의 목적입니다. CPU 스케줄링의 종류 CPU 스케줄링이 동작하는 시점은 4가지가 있습니다. 1. Running -> Waiting 2. Running -> Ready 3. 프로세스 종료 4. Ready -> Running 비선점형 스케줄링 1과 3의 상황에서만 동작하는 스케줄링 기법입니다. 한 작업이 CPU time을 할당받으면 그 작업이 끝날 때까지 운영체제가 중단하거나 다른 작업을 할당할 수 없습니다. 선점형 스케줄링 그 외의 다른 스케줄링 기법입니다. 운영체제가 중간에 실행중인 작업을 중단하..
멀티 프로세스와 멀티 스레딩에 대해 알아보고 그 밖에 헷갈리는 개념에 대해서도 정리하였습니다. 멀티 프로세스 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것입니다. 장점 서로의 메모리에 침범할 수 없습니다. 여러 자식 프로세스 중 하나에 문제가 발생하여도 다른 프로세스에는 영향이 가지 않아 안정성이 높습니다. 단점 독립된 메모리를 갖고 있기 때문에 작업량이 많아지면(Context Switching이 자주 발생하면) 오버헤드가 발생합니다. IPC가 필요합니다. 멀티 스레드 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것입니다. 장점 스레드 간 데이터를 주고받는 것이 간단해져 스레드 간 통신이 간단합니다. 교환해야 할게 적어서 Conte..
PCB (Process Control Block) 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는구조체입니다. 프로세스의 상태 관리와 문맥 교환(Context Switching)을 위해서 필요합니다. PCB는 운영체제가 프로세스를 표현한 것입니다. 프로세스가 생성될 때마다 고유의 PCB 가 생성되며, 프로세스가 완료되면 PCB는 제거됩니다. PCB에 저장된 요소 Process ID : 프로세스의 고유 ID Process State : 프로세스의 상태 (Create, Ready, Running 등등) Program Counter : 프로세스를 위해 실행될 다음 명령어의 주소 Register : Accumulator, General Register 등을 포함..
병렬 처리 병렬 처리는 동시에 여러 개의 명령을 처리해 CPU의 성능을 향상하는 것을 말합니다. 대표적인 컴퓨터의 병렬 처리 기법으로는 파이프라인, 슈퍼스칼라 기법이 있습니다. 병렬 처리 고려사항 1. 상호 의존성이 없어야 합니다. - 각 명령이 서로 독립적이고 앞의 결과가 뒤의 명령에 영향을 미치지 않아야 합니다. 2. 각 단계의 시간이 거의 일정해야 합니다. - 각 단계의 시간이 다르다면 병목 현상이 발생합니다. 3. 전체 작업시간(명령어)을 몇 단계로 나눌지 고려해야합니다. - 작업을 N개로 쪼갤 때 N을 병렬 처리의 깊이라고 합니다. - N이 너무 커지면 각 단계마다 작업을 이동하고 불러오는 데 시간이 많이 걸려 오히려 성능이 떨어집니다. 명령어가 실행되는 과정 CPU 내에서 명령어는 제어장치가 ..
- Total
- Today
- Yesterday
- setBackgroundColor
- 쓰레드
- rxcocoa
- 디프만
- PHAsset
- Swift
- swiftsoup
- 부캠
- 프로세스
- 운영체제
- PHImageRequestOptions
- 스냅킷
- 프로세스간통신
- 스레드
- URLComponents
- OS
- ios
- webcrawl
- isNetworkAccessAllowed
- sharedmemory
- 멀티프로세스
- optional
- returnKey
- WKUIDelegate
- Xcode
- 슈퍼스칼라
- 개발대외활동
- cs
- RxSwift
- 개발동아리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |