목록전체 글 (111)
Shine's dev log
우리가 사용중인 컴퓨터는 여러개의 프로세스들이 실행되고있다. 사실 이 여러개의 프로세스는 독립적으로 생성된 것이 아니라 처음 하나의 프로세스에서 복제되어 나온 자식들이다. 이때, 프로세스를 복제하여 자식 프로세스를 낳는 과정을 알아보자. 1. Create Process 앞서 말했듯이 모든 프로세스들은 복제되어 생성된다. 그리고, 기존 프로세스에서 새로운 프로세스를 생성하는 시스템콜이 fork() 이다. fork 는 현재 실행중인 프로세스와 똑같은 프로세스를 생성한다. 이때. 기존 프로세스를 parent process, 복사된 프로세스를 child process 라고 한다. child process는 parent process 의 주소공간(메모리)을 복사하여 만들어진..
컴퓨터를 공부하다 보면 프로그램, 프로세스라는 말이 많이 나온다. 과연 프로그램과 프로세스의 정확한 정의는 무엇인지 이 둘의 차이는 무엇인지 이번에 다뤄보자. 1. 프로세스란? 프로세스를 가장 직관적으로 볼 수 있는 곳은 작업관리자이다. 작업관리자를 실행하면 프로세스 탭에서 현재 컴퓨터에서 실행중인 프로세스의 목록을 확인할 수 있다. 우리가 현재 사용중인 웹이나 프로그램들 뿐만 아니라 우리가 인지하지 못했지만, 열심히 돌아가고 있는 여러 프로세스들도 확인할 수 있다. 프로세스란.. 디스크에 있는 프로그램이 메모리에 올라와 실체화 된 것이다. 자바를 예로들어 설명해보면, class 인 프로그램이 object인 프로세스가 되는 것이다. 따라서 하나의 ..
이제 본격적으로 운영체제의 구조에 대해 살펴보자. 운영체제는 구조에 따라 크게 4가지로 분류된다. 지금부터 하나씩 살펴보자. 1. Simple Structure 가장 간단하고, 가장 오래된 운영체제의 구조이다. 가장 대표적인 운영체제로는 MS-DOS가 있다. 과거 컴퓨터의 메모리와 성능이 지금보다 안좋을 때 나온 운영체제이기 때문에 공간 활용을 극대화 시켰다. 그래서 모듈화로 구분되어 있다기보다는 하나의 큰 덩어리로 되어있는 구조이다. 위의 그림이 MS-DOS의 대략적인 구조를 나타낸 그림이다. 그림에서 볼 수 있다시피 일반 어플리케이션도 하드웨어에 직접적으로 접근을 할 수 있는 구조이다. 즉, 유저모드와 커널모드의 구분이 없어서 보안상으로 취약한 형태..
1. 컴퓨터가 켜지는 과정 우리가 컴퓨터를 켜기 위해서 전원 버튼을 누르는 순간, CPU에 전원이 들어가게 된다. CPU의 Program Counter는 전원이 들어오는 순간, 컴퓨터 메모리 중 롬(ROM)에 저장되어 있는 코드를 실행시킨다. 이 과정에서 1) PC의 전체적인 상태를 점검하고(POST; Power On Self Test), 2) Bootstrap Program (BIOS)을 실행시켜 3) Boot loader를 RAM에 적재하여 실행시킨다. 이후 4) Boot loader가 운영체제를 메모리에 올려 실행시킨다. 하지만 운영체제는 크기가 큰 프로그램이기 때문에 한번에 운영체제의 모든 부분이 로드되기는 힘들다. 그래서 운영체제 중 핵심적인 기능이 모여있는 부분이 먼저 실행이 된..
지난번에 정의한 운영체제란 "사용자와 하드웨어 사이에서 사용을 더 원활하게 해주는 소프트웨어" 였다. 즉, 운영체제란 사용자가 사용하는 어플리케이션과 컴퓨터를 구성하는 하드웨어 그 사이 어딘가에 위치해 있다는 것을 알 수 있다. 다시말하면, 중간에 위치한 운영체제가 일을 잘못하게 되면, 사용자가 사용하는 어플리케이션이 컴퓨터의 하드웨어, 즉 굉장히 코어한 부분까지 접근이 가능하다는 것이다. 운영체제를 경찰에, 어플리케이션을 시민, 하드웨어를 은행으로 비유해보자. 만약 경찰(운영체제)가 해야할 일을 제대로 하지 않으면, 시민(어플리케이션)이 마음대로 은행(하드웨어)에 접근하여 돈을 훔칠 수 있다는 것이다. 오늘은 이런 Protection의 관점에서 운영체제를 살펴보자. 1. 유저모..
컴퓨터를 사용할 때, 가장 많이 쓰는 말 중 하나가 윈도우이다. "윈도우에서 자꾸 업데이트 하래..", "윈도우 10이 나왔더라" 위와 같이 거의 윈도우 = 컴퓨터 의 개념으로 쓰이기도 한다. 이처럼 잘 알고 있는 윈도우는 운영체제의 일종이다. 윈도우 외에도 리눅스, 맥 등 여러가지 운영체제가 존재한다. 그렇다면 이렇게 알듯 말듯한 운영체제란 무엇인지 자세히 알아보자. 1. 운영체제란? "컴퓨터와 사용자 사이에서 사용을 더 원활하게 해주는 소프트웨어" 라고 정의할 수 있다. 컴퓨터는 크게 4가지로 구분할 수 있다. 컴퓨터를 사용하는 사용자, 사용자가 실행하는 어플리케이션, 실제 컴퓨터를 물리적으로 구성하는 하드웨어, 그리고 운영체제 이렇게 4가지로 구분이 가능한데, 그 구조..