<운영체제 TIL 목록>
1. 운영체제란? 목적? 분류?
2. 인터럽트란? 컴퓨터 시스템 동작원리로 알아보자.
3. 하드웨어, 메모리 및 메모리 보안 방법?
4. 프로그램의 구조, 실행 과정?
5. 인터럽트, 문맥 교환(컨택스트 스위칭), PCB 정의와 차이?
7. 프로세스 생성? 자식 부모 관계를 이용한 협력?
8. 스레드, 멀티스레드란? 프로세스와의 차이?
9. CPU 스케줄링란? 종류 평가 기준?
10. ''업데이트 예정"
1. 스레드란?
정의: 프로세스 내에서 실제로 작업을 수행하는 주체.(출처: TCP School), 프로세스 내 실행 단위.(출처: 위키백과) 스레드는 스레드 ID, 레지스터 세트, 프로그램 카운터, 스택으로 구성됩니다.
2. 스레드 특징?
- 프로세스의 실행 단위로서 존재: 프로세스는 프로그램의 실행 단위인 반면, 스레드는 프로세스의 실행 단위입니다. 만약 한 프로세스 내에 스레드가 여러개 있다면 하나의 프로세스가 여려개의 실행 단위를 가지는 거겠죠? 물론 그렇다고해서 스레드들이 동시에 Instruction을 실행하는 것이 아닙니다. 작업 처리의 동시성은 유지됩니다.
- 스레드간 메모리 공유: 스레드는 프로세스 내의 실행 단위기 때문에 프로세스의 코드, 데이터, 힙 공간을 사용합니다. 멀티 스레드면 스레드들이 이를 공유하는 방식이 됩니다.
3. 프로세스와 스레드 차이?
- 실행 목적에서 다릅니다. 프로세스는 프로그램의 실행 단위이며 스레드는 프로세스의 실행 단위입니다.
- 독립적으로 가진 자원이 다릅니다. 프로세스간 자원은 독립적이지만 스레드는 코드, 데이터, 힙을 같은 프로세스 내 스레드와 공유합니다.
- 통신 방법에서 차이가 있습니다. 프로세스간 통신은 IPC를 사용하고, 스레드는 공유자원인 데이터와 힙을 활용합니다.
프로세스 | 스레드 | |
실행 목적 | 프로그램 실행 단위 | 프로세스 실행 단위 |
독립적인 자원 | 코드, 데이터, 힙, 스택, PCB 자료 값 |
스택, 스레드 ID, PC, 레지스터 집합 (코드, 데이터, 힙을 타 스레드와 공유) |
통신 방법 | 프로세스간 통신은 IPC 사용 | 공유 자원인 데이터, 힙 활용 |
4. 스레드 장점?
- 스레드는 프로세스의 자원을 공유하기 때문에 생성, 종료 및 스레드 스위칭 시간이 짧습니다.
- 데이터, 힙 공간을 공유하기 때문에 스레드간 통신이 빠릅니다.
5. 멀티 스레드란?
정의: 하나의 프로세스 내에 둘 이상의 스레드 작업 단위가 존재하여 다중 작업을 수행하는 것. 싱글 코어일 땐 동시성의 이점을 얻을 수 있으며 멀티 코어 프로세서에선 병렬성의 이점이 존재한다.
5-1. 코어란 무엇인가?
정의: 코어는 큰 cpu에 속하는 작은 cpu 혹은 프로세서다. 코어들은 각각의 Control unit을 가지고 때로 L1,L2 캐시 메모리 또한 독립적으로 가진다.
6. 멀티 스레드 장단점?
장점
- 다중 처리로 인해 프로세스의 cpu 부스트 기간이 단일 스레드일 때 보다 길어집니다. 또한 프로세스 컨택스트 스위칭보다 스레드 스위칭 시 캐시 적중률이 낮아질 위험이 적은 것도 성능 향상의 원인이 됩니다.
- 프로세스의 cpu 부스트 시간 보장은 사용자 응답성 개선으로 이어집니다. 하나의 스레드가 I/O를 위해 블락이 되면 다른 스레드가 다른 일을 처리하여 사용자에게 보여줄 수 있기 때문입니다.
- 코드, 데이터 및 힙을 공유하기 때문에 메모리 경제성이 멀티 프로세스에 비해 증가합니다. 또한 공유된 자원은 통신 성능의 향상으로 이어지죠.
단점
- 스레드간 긴밀하게 연결되어 있기 때문에 하나의 스레드에 문제가 생기면 다른 스레드도 모두 멈춰지고 결국 운영체제는 해당 스레드를 실행한 프로세스를 종료합니다. 이는 스레드간 자원을 공유하기 때문입니다. 하나의 스레드에 문제가 생기면 다른 스레드는 자신이 사용할 공유 자원의 안정성을 보장 받지 못합니다. 이에 운영체제는 아예 해당 프로그램을 종료하게 되는 것이죠.
- 공유 자원을 이용한 통신 시 동기화 관리를 해줘야합니다.
6. 멀티 프로세스란?
정의: 하나 이상의 프로세서로 여러개의 작업을 병렬적으로 실행하는 과정이다. 동시성의 특징을 보이는 멀티 테스킹과 다르게 프로세스들을 동시에 실행시키는 특징이 있다.
7. 멀티 프로세스 장단점?
장점
- 병렬 처리로 인해 작업 능률이 상승한다.
- 프로세스 간 안정성 증가한다. 프로세스의 자식 중 하나에 문제가 생기면 해당 자식만 죽고 나머지 자식과 부모는 정상 작동한다.
단점
- 부모-자식 관계로 생성된 프로세스가 멀티프로세서로 작동된다면 공유 자원이 없기에 메모리 효율이 낮아진다.
- 멀티 프로세스는 독립적인 주소 공간을 가지고 있기 때문에 프로세스간 통신 시 멀티 스레드에 비해 효율이 좋지 않은 통신 방법인 IPC를 쓰게 된다.
- 컨텍스트 스위칭으로 인한 오버헤드가 증가한다. 부모-자식 관계로 생성된 프로세스에서 exec()을 실행하여 프로세스의 상태 값을 바꾸는 것은 cpu 사용 효율을 저하시킨다.
8. 멀티 프로세스 대신 멀티 스레드 쓰는 이유?
- 자원을 효율적으로 사용해야하거나 실행 단위 간의 통신이 자주 필요할 경우에 멀티 스레드를 사용하는게 좋을 것 같습니다. 멀티 스레드는 스레드간 자원 공유를 하기 때문에 메모리 효율과 통신 효율이 좋기 때문입니다.
9. 멀티 스레드 대신 멀티 프로세스 쓰는 이유?
- 자원을 추가적으로 소모하여 프로세스간의 독립적 실행이 보장될 필요가 있을 경우와 동기화 작업이 무조건 지켜져야할 경우, 멀티 프로세스를 사용할 것 같습니다. 멀티 스레드는 스레드간 긴밀하게 연결돼있어, 하나의 스레드에 문제가 생길 시 프로세스가 종료될 수 있습니다. 프로세스간의 독립성은 이를 방지할 수 있습니다.
멀티 프로세스 | 멀티 스레드 | |
연결성 | 프로세스간 독립적 | 스레드간 긴밀하게 연결 |
자원 소모 | 완전히 분리된 물리 주소 공간 사용 = 메모리 소모 |
코드, 데이터, 힙 공간 공유 |
컨텍스트 스위칭 효율 | 캐시 & 레지스터 값등 모두 바꿔야해서 오버헤드 큼 |
공유되는 공간의 존재-> 교체 해야할 메모리 양 감소 -> 캐시 적중률의 감소등 부수 효과-> 컨텍스트 스위칭 효율 증가 |
통신 효율 | 공유 메모리가 없어 IPC 사용 | 공유 자원으로 통신 비용 절감 |
동기화 필요성 | 동기화 작업 필요x | 공유 자원 관리 필요 |
10. 멀티 프로세싱과 멀티프로그래밍 차이?
- 멀티 프로세싱은 프로세서가 여러개 존재하여 프로세스들이 동시에 실행되는 과정이다.
- 멀티 프로그래밍은 실행된 프로그램들이 주메모리 영역에 올라가 동시에 실행되는 것 처럼 보이는 과정이다. 멀티 프로세싱은 동시성의 특징을 가진다. 이는 운영체제가 cpu를 시분할 방식으로 프로세스들에게 할당하여 구현된다.
'운영체제(OS)' 카테고리의 다른 글
[운영체제] 9. CPU 스케줄링이란? 왜 필요? 알고리즘 종류, 평가 기준? (0) | 2022.03.02 |
---|---|
[운영체제] 7. 프로세스 생성? 자식 부모 관계를 이용한 협력? (0) | 2022.02.22 |
[운영체제] 6. 프로세스란? 5 or 6가지 상태? 스케줄러? (0) | 2022.02.20 |
[운영체제] 5. 인터럽트, 문맥 교환(컨텍스트 스위칭), PCB 정의와 차이? (0) | 2022.02.19 |
[운영체제] 4. 프로그램의 구조, 실행 과정? Easy with TMI (0) | 2022.02.18 |