혼공학습단 8기 혼공머신에 이어, 두 번째 혼공학습단에 지원했다. 이번엔 컴퓨터 구조와 운영체제였다. 언젠가는 꼭 한번 공부해보고 싶었지만 기회가 없었던 컴구OS, 좋은 기회다 싶어 도전했다. 어려웠다. 꽤 많이 어려웠다. 정확한 정의와 개념이 잡히지 않은 채로 주마간산 격으로 공부했다. 누군가가 뭘 배웠냐고, 기억나는 대로 말해보라고 하면 어버버버 할 것임에 분명하지만, 그래도 의미있는 시간이었다. 원래 공부라는 게 한번에 완벽히 이해하려고 하는 게 아니다. 나중에 기억을 떠올리기 위해, "어 나 이거 그때 봤었는데"를 위해 하는 게 공부다.책의 문장을 그대로 쓰고 싶지 않았다. 조금이라도 이해하고 나만의 언어로 쓰고 싶었다. 비유를 많이 들었다. 그래야 나 스스로에게 설명이 가능하기 때문이다. 왜인지..
15. 파일 시스템CPU, 메모리, OS의 동작원리 등을 공부하면서 느낀 것을 딱 하나 말하라면, 이렇게 말하겠다.이게 돌아간다고?!그것도 수 GHz의 속도로!?컴퓨터를 설계하는 사람들이 대단하다고는 생각하고 있었지만,그 존경심이 백 만 배만큼 더 커진 것 같다.마지막은 파일 시스템이다.파일 시스템이야 뭐 별거 있나...?그냥 폴더 있고 파일 있는게 전부 아닌가?...라고 생각하면 오산이다.15.1 파일과 디렉터리내가 생각했던 보조기억장치, 디렉터리, 파일의 구조는 아래 그림과 같았다.출처: https://wikidocs.net/223730책장이 보조기억장치이고, 책장 한 칸은 폴더, 상자는 파일이다.이 그림도 어쩌면 수정해야 할 수도 있겠다.파티션의 존재 때문인데... 조금 뒤에 설명하겠다.파일은 그 ..
14. 가상 메모리지금까지 OS가 프로세스를 어떻게 관리하는지 열심히 배웠다.핵심은 OS가 프로세스에게 자원을 어떻게 잘 배분하는가였다.그런데 프로세스는 메모리에 올라간다.프로세스를 메모리에 올리는 것도 분명히 OS가 관리해야 할 사항이다.그 과정에서 가상 메모리의 개념이 자연스럽게 등장하게 된다.14.1 연속 메모리 할당연속 메모리 할당(contiguous memory allocation)은 프로세스를 메모리에 올리는 가장 간단한 방법이다.가장 먼저 실행될 프로세스를 메모리에 올리고, 그 다음 실행될 프로세스를 바로 뒤에 올린다.다만, 인터넷을 찾아보면 연속 메모리 할당도 두 가지 방법으로 세분화된다.책에 있는 것과 같이 빈틈 없이 메모리가 채워지는 것을 variable-size allocation이라..
13. 교착 상태교착 상태는 아래 이미지 한 장으로 설명 가능하다.서로가 각자에게 필요한 것을 가지고 있다!어떡하지?13.1 교착 상태란OS, 프로세스, 자원의 관점으로 보자면 아래와 같은 상황이다.출처: https://www.geeksforgeeks.org/introduction-of-deadlock-in-operating-system/교착 상태(deadlock)가 성립하기 위한 조건은 네 가지가 있다.상호 배제: 하나의 자원은 한 번에 하나의 프로세스만 점유할 수 있다.점유와 대기: 프로세스가 자원 하나를 붙들고 다른 자원을 기다릴 수 있다.비선점: 프로세스가 다른 프로세스의 자원을 강제로 뺏을 수 없다.원형 대기: 위 그림처럼, 자원 할당 그래프가 루프를 만들 수 있다.13.2 교착 상태 해결 방법..
12. 프로세스 동기화줌으로 회의를 하다 보면 좀 불편할 때가 있다.두 명 이상이 동시에 말할 때다.그래서 손을 먼저 들고 말할 순서를 정하면 된다.하지만 사실 그것도 불편하다.프로세스도 동시에 실행되고 싶을 때가 있다.하지만 동시에 실행할 프로세스들이 같은 자원을 쓴다면 문제가 된다.줌 회의로 비유하자면, 공간과 시간(자원)을 같이 쓰고 싶은 두 사람이 있을 때의 문제이다.12.1 동기화란아주 간단한 예시로, 같은 파일을 두 프로세스가 동시에 수정하는 경우 문제가 생길 수 있다.얼핏 생각하면 그게 왜 문제인지 와닿지 않을 수 있다.사람 기준이 아니라 컴퓨터의 기준으로 생각해야 한다.예를 들어, 파일의 값을 읽어서 1 증가시켜서 저장하려면 아래의 과정이 필요할 것이다. (틀릴 수 있음)프로세스가 OS를 ..
11. CPU 스케줄링화장실 줄을 생각해보자.배운 사람이라면 아무리 급해도 온 순서대로 들어가야 한다.그런데 정말 급한 사람이 왔다! 곧 나올 것 같다! 더 이상 버틸 수가 없다!"아 뭐 누군 안 급한줄 아나!"라고 싸움이 나면 그야말로 똥판... 아니 개판이 될 것이다.그래서 관리자가 필요하다. 관리자의 역할은 누구를 먼저 들여보낼지 정하는 것이다.프로세스는 CPU를 만나야 본인의 소임을 다할 수 있다.그런데 대기 줄이 너무 길다!언제 누구를 먼저 들여보낼지 OS가 결정을 해야 한다.개중에는 더 급한 프로세스가 있을지도 모른다. 따라서 운영의 묘가 필요하다.이것을 CPU 스케줄링이라고 부른다.11.1 CPU 스케줄링 개요간단하게, 먼저 들어온 것을 먼저 실행시키면 안될까?그렇게 간단한 문제였으면 책의 ..
10. 프로세스와 스레드본격적으로 OS를 알아본다.일단 파일이었던 프로그램이 돌아가는 프로그램이 된 프로세스를 알아야 한다.그리고 프로세스는 여러 개가 돌아갈 수 있다.어떻게? 스레드도 알아보자.10.1 프로세스 개요지난 장에서 얘기했듯이, 보조기억장치에 있는 것은 파일일 뿐이다.파일은 그 자체로 실행 중인 무언가가 아니다.실행 상태가 되려면 메모리에 올라가서 정보의 흐름을 타야 한다.작업 관리자의 프로세스 탭에 나오는 것들이 바로 이것이다.윈도우 10 기준, 프로세스는 앱과 백그라운드 프로세스로 분리된다.앱은 사용자에게 보이는 프로세스, 백그라운드는 안 보이는 프로세스다.10.1.1 프로세스 제어 블록CPU는 바쁘다! 모든 프로세스를 동시에 실행할 수 없다.따라서 줄을 서서 기다려야 한다.OS가 이 줄..
9. 운영체제 시작하기지금까지 알아본 것들은 모두 하드웨어였다.CPU는 ALU, 제어장치, 레지스터, 캐시로 구성된다.그 외에 메모리, 보조기억장치, 입출력장치들이 있다.이것들이 주고받는 정보에 대해서도 알아봤다.하지만 전기를 넣는다고 알아서 정보를 주고받지 않는다.사람이 사무실에 앉아 있다고 해서 일을 하는 것은 아니듯이 말이다.그럼 뭣이 필요한가?지능이 필요하다!9.1 운영체제를 알아야 하는 이유사람의 뇌는 단순히 하드웨어가 아니다.뉴런들이 전기 신호를 통해 정보를 주고 받는 복잡한 기계이다!전기 신호를 어떤 기준으로 발생시키고, 어떻게 해석할 것인가?해석한 결과를 어떻게 이용할 것인가?이 모든 것에 필요한 것을 우리는 '지적 능력' 또는 '지능'이라고 부른다.컴퓨터의 부품은 하드웨어이다.이것들이 잘..
8. 입출력장치아...꼭 알아야 할까.꼭 이렇게까지 알아야 할까.정말 이렇게까지 자세히 알아야 할까.그런데 모르고 넘어가자니 찝찝하다.현재 시간 밤 1시 18분... 족장님 보고 계시죠?출처: https://www.madtimes.org/news/articleView.html?idxno=187678.1 장치 컨트롤러와 장치 드라이버내가(CPU가) 사무실에서(메인보드 위에서) 일한다.내가 사장이면 좋겠다만 (좋은게 맞을까)사장이 아니므로 사장에게 보고를 해야 한다.사장은 입력 장치를 통해 지시사항을 보내고나는 출력 장치를 통해 보고를 한다.입력 장치는 키보드, 마우스 등이다.출력 장치는 모니터, 프린터, 스피커 등이다.그런데 도대체 어떻게 동작할까?내가 누르는 키가 어떻게 정보가 되어 메인보드, 시스템 버..
7. 보조기억장치보조기억장치는 딱히 볼 게 있을까? 싶었다.하지만 HDD와 플래시를 본다고 하니 급 궁금해졌다.RAID도 본다고 하니 더 궁금해졌다.레이드 보스와의 연관성은 모르겠다.7.1 다양한 보조기억장치내가 9살 쯤 학교에서 처음 만졌던 컴퓨터는 보조기억장치가 없었다.그냥 누르니까 뭔가 나오는 신기한 장치였다.대충 이렇게 생겼었다.출처: https://uxdesign.cc/what-i-learned-from-a-30-year-old-video-game-console-9eafa9abf9da컴퓨터 학원에서 만졌던 컴퓨터는 5.25인치 플로피 디스크를 넣을 수 있었다.디스크를 넣어야 MS-DOS가 구동되었던 걸로 기억한다.왜 이렇게 불편할까, 영구 저장 가능한 저장장치는 왜 없는걸까, 라고 불편해하고 있..