본문 바로가기

카테고리 없음

혼자 공부하는 컴퓨터구조 + 운영체제 12~13Chapter 요약정리

 
혼자 공부하는 컴퓨터 구조+운영체제
이 책은 독학으로 컴퓨터 구조와 운영체제를 배우는 입문자가 ‘꼭 필요한 내용을 제대로 학습’할 수 있도록 구성했다. 뭘 모르는지조차 모르는 입문자의 막연한 마음에 십분 공감하여 과외 선생님이 알려주듯 친절하게, 핵심 내용만 콕콕 집어 준다. 〈컴푸터 구조〉편에서는 컴퓨터를 이루고 있는 부품들과 각 부품의 역할을 알아본다. 또한 컴퓨터 내부의 구조와 작동법을 이해하고, 컴퓨터가 어떻게 명령어를 처리하는지 학습한다. 〈운영체제〉편에서는 운영체제의 필요성을 배운 뒤 앞서 배운 컴퓨터의 부품들을 운영체제가 어떻게 사용하는지 전체 과정을 살펴본다. ‘전공서가 너무 어려워서 쉽게 배우고 싶을 때’, ‘개발자가 되고 싶은데 뭐부터 봐야 하는지 모를 때’ ‘기술 면접을 제대로 준비해야 할 때’ 다른 입문서에서는 알려주지 않았던 진짜 컴퓨터 공학 지식을 〈혼자 공부하는 컴퓨터 구조+운영체제〉에서 만나 보자! 42명의 베타리더와 함께 입문자에게 꼭 맞는 난이도, 분량, 학습 요소 등을 적극 반영했다. 어려운 용어와 개념은 한 번 더 풀어 쓰고, 적절한 예시와 이해하기 쉬운 그림으로 누구나 이해할 수 있도록 구성했다. 또한 일상 소재를 활용한 비유를 활용하여 어렵게 느껴질 수 있는 컴퓨터 구조와 운영체제를 머릿속에 직접 그리듯이 설명해 준다. ‘혼자 공부해 본’ 여러 입문자의 초심과 눈높이가 책 곳곳에 반영된 것이 이 책의 가장 큰 장점이다.
저자
강민철
출판
한빛미디어
출판일
2022.08.16

혼자 공부하는 컴퓨터구조 + 운영체제 책 표지

 

안녕하세요 !
혼공단 11기로 선정 되어

공부하게 된 박지영입니다 🙂

매주 1회 혼자 공부하는 컴퓨터구조 + 운영체제 요약을 올리고 있습니다.

파이썬(코딩자율학습단), C언어(빡공단) 등 많은 프로그래밍 요약을 올리고 있을거니
다른 글도 많은 관심 부탁드립니다 🥰

 

Chapter 12 프로세스 동기화

12-1 동기화란

 

헙력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화 되어야 합니다.

 

동기화 : 작업들 사이의 수행 시기를 맞추는 것 (정보/통신 분야의)

 

프로세스 동기화 : 프로세스들 사이의 수행 시기를 맞추는

- 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기

- 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기

 

상호배제 : 공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘

동시에 접근해서는 안 되는 자원에 동시에 접근하지 못하게 하는 것이 상호 배제를 위한 동기화

 

ex. 생산자와 소비자 문제

 

공유자원 : 공동으로 작업하는 자원

전역변수가 될 수 있고, 파일이 될 수 있고, 입출력장치, 보조기억장치가 될 수 있습니다.

 

공유자원 중에는 두 개 이상의 프로세스를 동시에 실행하면 문제가 발생하는 자원이 있습니다.

이렇게 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역을 임계구역

 

임계구역은 두 개 이상의 프로세스가 동시에 실행되면 안 되는 영역이지만,

잘못된 실행으로 인해 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우를 레이스 컨디션

 

상호 배제를 위한 동기화를 위해서는 세가지 원칙 반드시 지켜야한다.

1. 상호배제 : 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 다.

2. 진행 : 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 한다.

3. 유한 대기 : 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스언젠가는 임계 구역에 들어올 수 있어야한다

(무한정 대기해서는 안됨)

12-2 동기화 기법

 

뮤텐스 락 : 동시에 접근해서는 안 되는 자원에 동시에 접근하지 않도록 만든 도구 (상호 배제를 위한 동기화 도구)

ex. 자물쇠

 

뮤텐스하나의 전역변수두 개의 함수로 구현할 수 있습니다.

- 자물쇠 역할 : 프로세스들이 공유하는 전역변수 lock

- 임계 구역을 잠그는 역할 acquire 함수

- 임계 구역의 잠금을 해제하는 역할 release 함수

 

acquire 함수 : 프로세스가 임계 구역진입하기 전에 호출하는 함수

release 함수 : 임계 구역에서의 작업이 끝나고 호출하는 함수

 

탈의실(ex) 문이 잠겨 있는지 쉴 새 없이 반복하며 확인해보는 것. 이런 대기 방식이 바쁜대기.

 

세마포뮤텐스 락과 비슷하지만, 조금 더 일반화된 방식의 동기화 도구

세마포 종류

- 이진 세마포, 카운팅 세마포(이진 세마포는 뮤텐스 락과 비슷한 개념이므로, 여러 공유 자원을 다룰 수 있는 카운팅 세마포 다루겠습니다)

 

세마포뮤텐스 락과 비슷하게 하나의 변수와 두 개의 함수로 구현할 수 있습니다.

- 임계 구역에 진입할 수 있는 프로세스의 개수(사용 가능한 공유 자원의 개수)를 나타내는 전역변수 S

- 임계 구역에 들어가도 좋은지, 기다려야 할지를 알려주는 wait함수

- 임계 구역 앞에서 기다리는 프로세스에 '이제 가도 좋다'고 신호를 주는 signal함수

 

최근에 등장한 동기화 도구 : 모니터. 모니터는 세마포에 비하면 사용자가 사용하기에 훨씬 편리한 도구

 

특정 조건을 바탕으로 프로세스를 실행하고 일시 중단하기 위해 모니터는 조건변수를 사용하는데,

조건 변수는 프로세스나 스레드의 실행 순서를 제어하기 위해 사용하는 특별한 변수 

 

Chapter 13 교착 상태

13-1 교착 상태란

 

교착상태를 알아보기 위한 예시

ex. 식사하는 철학자 문제

367P

 

이렇게 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상교착상태

 

교착상태는 자원 할당 그래프를 통해 단순하게 표현할 수 있다.

 

자원 할당 그래프 369 ~ 372P

 

교착 상태 발생 조건

- 상호 배제. 교착상태가 발생한 근본적인 원인은 해당 자원을 한 번에 하나의 프로세스만 이용 가능했기 때문.

프로세스도 마찬가지로 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때. (상호배제)

- 점유와 대기 : 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태

- 비선점. 교착상태가 발생하게 된 또 하나의 근본적인 문제는 프로세스가 자원을 비선점 하기 때문

- 원형 대기 : 프로세스들이 원의 형태로 자원을 대기하는 것

13-2 교착 상태 해결 방법

교착 상태 회피

교착 상태가 발생하지 않고 모든 프로세스가 정상적으로 자원을 할당받고 종료될 수 있는 상태 : 안전상태

교착 상태를 발생할 수도 있는 상황 : 불안전 상태

 

안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서

안전 순서열대로 프로세스들에 자원을 배분하여 교착 상태가 발생하지 않는 상태 : 안전 상태

안전 순서열이 없는 상황 : 불안전 상태

 

시스템이 불안전 상태에 놓이면 교착 상태가 발생할 수 있는 위험이 있습니다.

 

교착 상태 검출 후 회복

교착 상태 검출 후 회복  : 교착 상태 발생을 인정하고 사후에 조치하는 방식

- 선점을 통한 회복 : 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식

- 프로세스 강제 종료를 통한 회복 : 단순하며 확실한 방법이지만

많은 프로세스들이 작업 내역을 잃게 될 가능성 있고, 오버헤드를 야기할 수 있다.

 

잠재적 문제를 무시하고 대처하는 방식 : 타조 알고리즘

 

이렇게 혼공단 컴퓨터구조 + 운영체제 5주차 12~13파트 요약 정리를 마쳤습니다.

 

이제 미션을 해볼까요??

5주차
(1/29 ~ 2/4)
Chapter 12 ~ 13 p. 363의 확인 문제 1번 풀고 인증하기 Ch.12(12-1) 임계 구역, 상호 배제 개념을 정리하기

 

기본 미션 인증

363의 확인 문제 1번

 

선택미션의 요약정리는
위에 요약정리에 있어요 !

 

벌써 5주차를 끝내고 마지막 6주차만 남았는데요

정말 아쉽고 그냥 매주 하고싶네요 😢💖

1년에 두번정도 혼공단을 하신다고 혼공족장님이 그러셨는데 !

제가 그 두번 매년 듣고, 혼공시리즈 책 다 마스터하여서 좋은 개발자로 성장하겠습니다 !!

제 블로그에 코딩자율학습단 python, 빡공단 C언어 등이 있습니다 많은 관심 부탁드립니다 🤞🤞