개발자는 기록이 답이다
기술 면접 대비 CS 핵심 요약 - 스레드 안전, IPC, 좀비&고아 프로세스 본문
2023.09.07 - [CS] - 기술 면접 대비 CS 핵심 요약 - 프로세스의 생성
기술 면접 대비 CS 핵심 요약 - 프로세스의 생성
2023.09.06 - [CS] - 기술 면접 대비 CS 핵심 요약 - 운영체제 📕본 포스팅은 "기술면접 대비 CS 전공 핵심 요약집" 책을 공부하면서 정리한 내용입니다. 1.2 프로세스 프로세스 관련 질문이 나왔을 때
strong-park.tistory.com
2023.09.08 - [CS] - 기술 면접 대비 CS 핵심 요약 - 프로세스 상태, 멀티 프로세스 vs 멀티 스레드
기술 면접 대비 CS 핵심 요약 - 프로세스 상태, 멀티 프로세스 vs 멀티 스레드
2023.09.06 - [CS] - 기술 면접 대비 CS 핵심 요약 - 운영체제 기술 면접 대비 CS 핵심 요약 - 운영체제 📕본 포스팅은 "기술면접 대비 CS 전공 핵심 요약집" 책을 공부하면서 정리한 내용입니다. 기술 면
strong-park.tistory.com
2023.09.09 - [CS] - 기술 면접 대비 CS 핵심 요약 - 프로세스 동기화, 교착 상태
기술 면접 대비 CS 핵심 요약 - 프로세스 동기화, 교착 상태
2023.09.07 - [CS] - 기술 면접 대비 CS 핵심 요약 - 프로세스의 생성 기술 면접 대비 CS 핵심 요약 - 프로세스의 생성 2023.09.06 - [CS] - 기술 면접 대비 CS 핵심 요약 - 운영체제 📕본 포스팅은 "기술면접
strong-park.tistory.com
📕본 포스팅은 "기술면접 대비 CS 전공 핵심 요약집" 책을 공부하면서 정리한 내용입니다.
1.2.9 스레드 안전 ( 중요도 ★★☆ )
스레드 안전(thread safe) : 멀티 스레드 환경에서 하나의 변수, 함수, 객체에 스레드 여러 개가 동시에 접근해도 문제가 없음을 의미
스레드 안전하지 않은 경우는 간단한 코드에서도 확인할 수 있다.
var++;
var 변수의 값을 메모리에서 CPU 레지스터로 로드 ➨ 연산처리 ➨ 연산결과를 메모리에 작성하는 과정을 거침
만약 이 코드에 스레드 2개가 접근하면 잘못된 결과를 초래한다
한 줄짜리 코드에서도 스레드 2개가 접근하면 예상 밖의 결과가 나온다.
1.2.7 프로세스 동기화에서 이야기한 too much milk 문제도 스레드 안전하다고 할 수 없음.
스레드 안전을 위한 조건
- 상호 배제(mutual exclusive) : 공유 자원에 접근해야 할 때 뮤텍스 또는 세마포어와 같은 상호 배제 기법을 사용해 접근 통제
- 원자 연산(atomic operation) : 공유 자원에 접근할 때 원자 연산을 이용하거나 원자적으로 정의된 연산을 이용해 연산 도중에 다른 스레드가 접근할 수 없게 한다. 여기서 원자 연산이란 '연산했다' 와 '연산 안 했다' 2가지만 존재하는 연산.
- 스레드 지역 저장소(thread local storage) : 각 스레드에서만 접근할 수 있는 저장소를 사용해서 공유되는 자원을 줄여야 한다.
1.2.10 IPC ( 중요도 ★★☆ )
- Inter Process Communication - 프로세스 간에 자원을 공유하는 방식
- 프로세스는 고유한 메모리 영역을 갖기 때문에 프로세스 간 자원을 공유해야 할 때 IPC해야 한다
1. 공유 메모리(shared memory)
- 프로세스 간에 공유 가능한 메모리를 구성해 자원을 공유하는 방식
- 여러 프로세스에서 접근할 수 있어서 동기화 문제 발생 가능성
2. 소켓(socket)
- 네트워크 소켓을 이용하는 프로세스 간 통신으로, 외부 시스템과도 이용할 수 있음
- 클라이언트와 서버 구조로 자원을 주고 받음
3. 세마포어(semaphore)
- 접근하는 프로세스를 제어해 공유 자원을 관리
4. 파이프(pipe)
- FIFO(First In First Out)형태의 메모리인 파이프를 이용해 프로세스 간 자원 공유
- 단방향 통신만 지원하므로 읽기 또는 쓰기 중 하나만 할 수 있음
- 양방향 통신을 하려면 읽기 파이프(read pipe)와 쓰기 파이프(write pipe)를 각각 생성해야 한다
5. 메세지 큐(message queue)
- FIFO 형태의 큐 자료구조를 사용해 프로세스 간 메시지를 주고 받는 방식
1.2.11 좀비 프로세스와 고아 프로세스( 중요도 ★★☆ )
좀비 프로세스(zombie process)
- 자식 프로세스가 종료되었지만 부모 프로세스가 자식 프로세스의 종료 상태를 회수하지 않았을 경우 남겨진 자식 프로세스
- 자식 프로세스가 종료될 때 부모 프로세스에 SIGCHLD라는 시그널을 보내면 부모 프로레스에서 wait()함수(시스템 콜)를 호출해 자식 프로세스의 상태 정보를 받고 자원을 회수 한다.
- 이때 자원 회수에 실패하면 좀비 프로세스가 생긴다. 좀비 프로세스가 쌓이면 자원이 낭비 된다.
고아 프로세스(ophan process)
- 부모 프로세스가 자식 프로세스보다 먼저 종료되는 경우
- 이럴 때는 자식 프로세스의 부모 PID를 init 프로세스(부팅 시 가장 먼저 실행되는 프로세스)의 PID인 1로 바꿔준다.
- 이렇게 하면 고아 프로세스의 부모 프로세스는 init프로세스가 된다
- 이후에 고아 프로세스가 작업을 종료하면 Init프로세스가 고아 프로세스의 자원을 회수해 좀비 프로세스가 되는 것을 방지한다.
'CS > 운영체제' 카테고리의 다른 글
기술 면접 대비 CS 핵심 요약 - 메모리 관리 전략 (0) | 2023.09.12 |
---|---|
기술 면접 대비 CS 핵심 요약 - 스케줄링 (0) | 2023.09.11 |
기술 면접 대비 CS 핵심 요약 - 프로세스 동기화, 교착 상태 (0) | 2023.09.09 |
기술 면접 대비 CS 핵심 요약 - 프로세스 상태, 멀티 프로세스 vs 멀티 스레드 (0) | 2023.09.08 |
기술 면접 대비 CS 핵심 요약 - 프로세스의 생성 (0) | 2023.09.07 |