혼공 컴퓨터구조 + 운영체제 4주차 공부 인증
여러 가지
안녕하세요. Zeromm입니다.
날이 갑자기 너무 추워졌네요. 학교로 가서 새벽 헬스를 하려고 했지만, 세상에! 밖은 요즘 너무 춥더라고요;; 그냥 푹 자고 내일부터 시작하려 합니다. 여러분들도 추위 조심하세요!
밀리지 않게 이번 주 혼공도 후딱후딱 해봅시다. 그럼 시작할게요~
CHAPTER 9 운영체제 시작하기
컴퓨터를 처음 쓸 때 부팅화면에서 마주하는 windows 마크는 다들 보셨을 겁니다. Microsoft사가 개발한 windows라는 운영체제는 전 세계 데스크톱의 75%라는 여전히 압도적인 비율을 차지하고 있고, 계속 새로운 버전이 출시되어 현재는 윈도 12 출시를 준비 중이라고 합니다. (2024년 하반기 기준) 이 윈도라는 운영체제가 전 세계인들의 사랑을 받게 된 이유에는 일반인 사용자들도 활용하기 쉽게끔 직관적인 설계와 GUI를 해두었기 때문이라고 생각해요. 다른 운영체제들에 비해선 훨씬 사용하기 편리하거든요. 그래서 운영체제를 생각할 때 윈도를 떠올리는 건 당연합니다. 우리가 가장 즐겨쓰고 또, 윈도우만큼 운영체제를 잘 설명하는 녀석은 없으니까요.
우리가 윈도우를 쓰면서 다양한 프로그램을 구동시키고 관리할 수 있습니다. 어렸을 적 저는 열심히 온라인 게임을 하다 먹통이 되면 ctrl+alt+del를 써 장치 관리자를 불러내어 프로그램을 강제종료하곤 했었죠. 이외에도 보이는 것 너머에 윈도는 더 많은 일을 하고 있습니다. CPU가 프로그램을 어떤 순서로 작동시킬 것이지, 장치들과의 연결은 어떻게 이룰 것인지 끊임없이 통제하고 있습니다. 운영체제는 어떻게 프로그램들을 다룰까요? 프로그램의 진행상태를 '프로세스'라 부르며 일 어떻게 통제하는지 이번 4주 차엔 그 여러 가지 방식에 대해 배워봅니다.
CHAPTER 10 프로세스와 스레드
앞에서 사용자와 연결될 수 있는 부분을 GUI라고 설명했었습니다. GUI처럼 사용자가 직접 확인 가능한 프로세스를 'foreground process'라고 합니다. 반대로 직접 확인할 수 없는 경우는 background process라고 합니다. 여담이지만 개발자들이 자신의 분야를 설명할 때, 혹은 자신의 커리어를 논할 때 'front end', 'back end'라고 말하곤 해요. process와 비슷하게 사용자가 확인할 수 있는 부분을 다루는 개발을 front end, 그렇지 않은 경우를 back end라고 하죠. 컴퓨터 분야를 전공하는 제 동생나 친구들 같은 경우, 이제 학부를 졸업하고 어느 분야의 개발자가 될지 어느 정도 결정을 합니다. 힘들고 원론적인 코딩을 선호하면 back end, 인터페이스나 디자인 같이 조금은 시각적인 감각을 필요로 하는 곳이 front end라고 들었습니다. 결국 운영체제도 '프로그램'의 일환이라 비슷한 맥락에서 접근할 수 있는 듯합니다.
이번 챕터에서 가장 중요한 내용은 PCB(process control block) 일 것 같습니다. 프로세스마다 몇 가지 정보가 들어있는 태그를 붙여주는 것이죠. 주소 하고는 조금 맥락이 다릅니다. 프로세스가 현재 진행되는 '상태'를 기록하고 있으니까요. 이 PCB를 이용해 CPU의 실행상태 일어나는 고속, 다중의 작업들을 해낼 수 있습니다.
그리고 프로세스의 상태와 구조에 대해서도 배웁니다. 이 부분은 조금 'class'같다는 생각을 했어요. 부모 프로세스가 자식 프로세스에게 자신의 정보를 '상속'시키는 점이 익숙했습니다. 그리고 다음 챕터에서 나올 스케쥴링 큐 설명을 위해 프로세스 상태의 5단계에 대해서도 배울 수 있었습니다.
CHAPTER 11 CPU 스케쥴링
이번 챕터가 저는 가장 재미있었습니다. 2번째 절에서 다양한 CPU 스케쥴링 알고리즘을 설명하는데, 이것을 구동방식에 따라, 보완 방식에 따라, '선점 여부'에 따라 다양한 방식들을 쓸 수 있다는 점이 흥미로웠습니다. 이것들을 이해하기 위해선 선점형과 비선점형 스케쥴링에 대해 알아야 합니다.
제가 그래도 생명과학을 매우 좋아하니까 이 파트를 보면서 떠올랐던 비유를 하나 들겠습니다. 세상에는 많은 '물질'이 있고, 이 물질들 중 어느 하나와 '특이적'으로 결합해 다른 산물을 만들어 내는 '효소'가 있습니다. 이들은 마치 열쇠와 열쇠구멍처럼 딱 들어맞는 쌍이 하나씩만 존재합니다. 효소의 특이적인 3차 구조에 기질(물질)이 딱 들어가면 이들은 서로 화학반응하여 효소-기질 복합체가 되고, 반응이 끝나면 다시 효소와 산물로 분리가 됩니다. 이때, 이 3차구조에 들어가 다른 기질과 반응을 하지 못하게 하는 녀석들이 있습니다. 바로 '경쟁적 저해제'죠. 이들은 '직접' 효소와 결합하고 있기 때문에 가용할 수 있는 효소의 수를 줄여버리고 결국 반응률의 저하를 끌어냅니다. 마치 '비선점형 스케쥴링'같죠. 미리 CPU(효소)에 독점하고 들어간 프로세스(경쟁적 저해제)는 다른 기질(프로세스)이 진입하는 것을 막습니다. 이때는 다른 프로세스가 CPU에 진입할 수 없어 자원불균등 문제가 생겨버리죠.
그리고 비경쟁적 저해제라는 녀석도 있습니다. 이 녀석들은 효소의 다른 부분에 달라붙어 3차 구조를 아예 바꿔버려요. 그래서 이 구조에 원래 맞던 기질이 와도 결합하지 못하게 합니다. 계속 튕겨져 나가고 반응하지 못한 채 새로운 물질들이 오겠죠. 조금 맥락이 다르긴 한데 '선점형 스케쥴링'이 이와 비슷합니다. CPU와 프로세스가 제대로 결합하는 것을 막고 자원을 다른 자원에 의해 뺏겨 버리죠. 이런 걸 개발자들이 알고 설계했는지는 모르겠지만, 적어도 생물이 작동하는 원리를 생각하면서 공학을 바라보면 재미를 볼 수 있는 듯합니다.
기본 미션 - p.304의 확인 문제 1번 풀고 인증하기
프로세스의 상태 5단계네요. 1번은 생성 상태, 2번은 CPU로 가기 전 준비 상태, 3번은 CPU에서 실행하는 실행단계, 4번은 실행이 끝났으니 종료단계, 5번은 입출력 장치의 작업을 기다리는 대기상태가 되겠습니다.
선택 미션 - Ch11(11-2) 확인 문제 1번
선입 선처리 스케쥴링에 따르면, 준비 큐에 들어간 순서대로 실행처리가 됩니다. 따라서 A-B-C-D순으로 삽입되었다면 똑같이 A-B-C-D순으로 처리가 되어야 합니다. 답은 3번입니다.
필기자료
마무리 및 소감
학교에 내려와서 슬슬 생활패턴을 다잡고 있습니다. 다음 주부턴 다시 기타 연주회 준비에 들어가니 더욱 삶이 규칙적이 될 것 같습니다. 2시부터 10시까지 시간을 연주회 준비에 힘써야 하니, 빈 시간인 오전을 잘 사용해서 독서나 학과 공부를 해나갈 생각입니다. 물론 여력이 된다면 평일에 혼공도 하고요 ^^ 그럼 다들 무탈한 한 주 보내시길 바라겠습니다.
출처
혼자 공부하는 컴퓨터구조 + 운영체제 p.278 ~ p 337