728x90
안녕하세요! 개발감자입니다.
오늘은 CS의 운영체제 중에서도 3.3 프로세스와 스레드에 대해서 정리해보았습니다.
3.3.4 PCB
- PCB(Process Control Block)
- 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터
- 프로세스 제어 블록
- 프로세스 생성 시 운영체제는 그 프로세스에 해당하는 PCB를 생성함.
- 프로세스의 중요한 정보를 포함 → 일반 사용자가 접근하지 못하는 커널 스택의 가장 앞부분에서 관리
- 메타데이터 : 데이터에 관한 구조화된 데이터를 설명하는 작은 데이터
- PCB의 구조
- 프로세스 스케줄링 상태 : 프로세스가 CPU에 대한 소유권을 얻은 후의 상태 (준비, 일시 중단 등)
- 프로세스 ID : 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
- 프로세스 권한 : 컴퓨터 자원 또는 IO 디바이스에 대한 권한 정보
- 프로그램 타운터 : 프로세스가 실행할 다음 명령어 주소에 대한 포인터
- CPU 레지스터 : 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
- CPU 스케줄링 정보 : CPU 스케줄러에 의해 중단된 시간 등에 대한 정보
- 계정 정보 : 실행한 유저의 정보
- IO 상태 정보 : 프로세스에 할당된 IO 디바이스 목록
- 컨텍스트 스위칭 (context switching)
- PCB를 교환하는 과정
- 한 프로세스에 할당된 시간이 끝나거나 인터럽에 의해 발생
- 컴퓨터의 프로그램이 동시 실행되는 것 처럼 보이는 것 → 다른 프로세스와의 컨텍스트 스위칭이 아주 빠른 속도로 실행되는 것임
- 현대 컴퓨터는 멀티코어의 CPU를 가지기 때문에 컨테스트 스위칭을 설명할 때에는 컴퓨터가 싱글코어라고 가정하고 설명을 한다.
3.3.5 멀티 프로세싱
프로세스가 여러 개라는 의미 즉, 멀티 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것
신뢰성이 높음 → 일부 프로세스에서 문제가 생기더라도 다른 프로세스에서 처리할 수 있음
- 웹 브라우저
- 멀티 프로세스 구조를 가짐
- 브라우저 프로세서, 렌더러 프로세스, 플러그인 프로세스, GPU 프로세스
- IPC (Inter Process Communication)
- 멀티 프로세스의 메커니즘 : 프로세스끼리 데이터를 주고받고 공유 데이터를 관리
- 예시 : 클라이언트가 데이터를 요청하고 서버는 클라이언트 요청에 응답하는 것
- 종류 : 공유 메모리, 파일, 소켓, 익명 파이프 등 ⇒ 스레드(메모리 완전 공유) 보다는 공유 속도가 떨어짐
3.3.6 스레드와 멀티 스레딩
- 스레드 : 프로세스의 실행 가능한 가장 작은 단위
- 프로세스는 여러 스레드를 가질 수 있음
- 프로세스는 코드, 데이터, 스택, 힙을 각각 생성하지만, 스레드는 코드, 데이터, 힙을 서로 공유한다. 그외는 각각 생성된다.
- 멀티 스레딩
- 프로세스 내 작업 여러 개의 스레드, 멀티 스레드로 처리하는 기법
- 스레드끼리 서로 자원 공유 → 효율성이 높음
- 예시 : 웹 요청 처리 시 새 프로세스 생성 대신 스레드를 사용하는 웹 서버를 활용 (빠른 처리와 동시성)
3.3.7 공유 자원과 임계 영역
- 공유 자원
- 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 모니터, 프린터, 메모리, 파일, 데이터 등의 자원이나 변수 등
- 경쟁 상태 : 2개 이상의 프로세스가 동시에 읽거나 쓰는 상황
- 임계 영역
- 둘 이상의 프로세스, 스레드가 공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 코드 영역
- 해결 방안 : 뮤텍스, 세마포어, 모니터 → 상호 배제, 한정 대기, 융통성 조건을 만족
- 토대가 되는 메커니즘 : 잠금 (화장실을 쓸 때 문 잠그는 것과 비슷한 원리
- 1) 뮤텍스
- 프로세스나 스레드가 공유 자원을 Lock()을 통해 잠금 설정하고 사용하고, 사용한 후에는 Unlock()을 통해 잠금 해제하는 객체
- 상태 : 잠금 또는 잠금 해제
- 2) 세마포어
- 일반화된 뮤텍스
- 간단한 정수값과 두 가지 함수 (wait, signal)로 공유자원에 대한 접근 처리
- wait : 자신의 차례가 올 때까지 기다림
- signal : 다음 프로세스로 순서를 넘겨줌
- 프로세스나 스레드는 동시에 세마포어 값을 수정할 수 없음
- 3) 바이너리 세마포어
- 0과 1의 두 가지 값만 가질 수 있는 세마포어
- 4) 카운팅 세마포어
- 여러 개의 값을 가질 수 있는 세마포어
- 여러 자원에 대한 접근 제어
- 모니터
- 모니터큐를 통해 공유 자원에 대한 작업들을 순차적으로 처리
- 세마포어보다 구현하기 쉬움 → 상호 배제는 자동이기 때문
3.3.8 교착 상태
교착 상태 (deadlock) : 2개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태 (서로를 원함)
- 교착 상태의 원인
- 상호 배제 : 한 프로세스가 자원 독점 → 다른 프로세스들은 접근 불가능
- 점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
- 비선점 : 다른 프로세스의 자원을 강제로 가져올 수 없음
- 환형 대기 : 프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스 B는 프로세스 A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황
- 교착 상태 해결방법
- 자원 할당 시 조건 성립이 되지 않도록 설계
- 교착 상태 가능성이 없을 때에만 자원 할당 → 은행원 알고리즘 사용
- 교착 상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 1개씩 지우기
- 매우 드물게 일어나므로 사용자가 작업을 종료 (처리하는 비용이 더 큼) → 응답없음이라고 뜨는 경우
- 은행원 알고리즘 : 총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고 안정 상태로 가도록 자원을 할당하는 알고리즘
면접을 위한 CS 전공지식 노트 | 주홍철 - 교보문고
면접을 위한 CS 전공지식 노트 | 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지! CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다! 개발자 면
product.kyobobook.co.kr
이 포스팅은 면접을 위한 CS 전공지식 노트를 기반으로 작성되었습니다.
728x90
반응형
'CS' 카테고리의 다른 글
[CS / 데이터베이스] 4.1 데이터베이스의 기본 (0) | 2024.05.29 |
---|---|
[CS / 운영체제] 3.4 CPU 스케줄링 알고리즘 (1) | 2024.05.29 |
[CS / 운영체제] 3.3 프로세스와 스레드 - 1 (0) | 2024.05.23 |
[CS / 운영체제] 3.2 메모리 (0) | 2024.05.22 |
[CS / 운영체제] 3.1 운영체제와 컴퓨터 (0) | 2024.05.21 |