컴퓨터는 왜 계층적인 시스템 구조를 가지게 되었는지, 운영체제가 어떻게 장치와 상호작용하는지,어떻게 운영체제는 CPU를 통제하면서 프로세스를 효율적으로 실행하고, 어떻게 시분할 기법을 적용하는지 알아본다.CPU와 메인 메모리가 메모리 버스로 연결되어 있다.그래픽 카드,
프로그램이란 단순히 디스크에 존재하는 명령어 모음에 불과하다. 운영체제는 단순한 명령어 모음을 메모리 위에서 실행할 수 있는 상태로 만든다. 이러한 실행 중인 프로그램을 프로세스라고 한다. 운영체제는 프로그램 실행을 위해 가장 먼저 프로그램 코드와 정적 데이터를 메모리
운영체제는 한 번에 하나의 프로세스에 CPU를 할당해 줄 수 있다. 특히 프로세스마다 계산 중심의 작업(CPU Burst Process) 또는 I/O 중심 작업(I/O Burst Process)과 같이 특성이 다르기 때문에 어떤 프로세스에 CPU를 언제, 얼마나 줄지
데이터 동기화 기법인 lock이 왜 필요하고, 소프트웨어 또는 하드웨어적으로 어떻게 구현할 수 있는지 살펴본다. 2개의 쓰레드가 공유 데이터에 접근하는 상황을 생각해보자. counter 변수를 각각의 쓰레드가 100만번 증가시키는 것이다. counter가 0부터 시작한
앞선 포스팅 - 락(lock)의 필요성과 구현 마지막 부분에서 컨디션 변수의 개념을 약간 이나마 다뤘다. 여기에서 조금 더 자세하게 살펴본다. 세마포어를 알아보고, 세마포어로 락과 조건 변수를 만드는 게 가능한지와 락과 커디션 변수를 사용하여 세마포어처럼 사용할 수 있
병행성 관련 문제는 일반적인 패턴을 가지고 있다고 한다. 먼저 비 교착 상태 오류가 과반수를 차지하고 그 중 원자성 위반과 순서 위반 오류가 대부분을 차지한다고 한다. 추가로 교착 상태와 교착 상태 발생 조건, 예방, 처리 방법에 대해서 알아본다.
운영체제는 사용하기 쉽고, 하나의 CPU에서 여러 프로그램이 안전하게 실행할 수 있는 메모리 개념을 만들어야 한다. 운영체제가 어떻게 메모리 가상화를 지원하고 필요한 하드웨어 지원이 무엇인지 알아본다. 1. 주소 공간 하나의 프로세스는 코드 영역, 데이터 영역, 스택
한 쌍의 베이스-리밋 레지스터를 사용하는 방식은 스택과 힙 사이 사용하지 않는 공간이 단순하게 낭비되고 있었다. 베이스-리밋 레지스터를 일반화한 세그먼테이션(Segmentation) 방식에 대해 알아본다.주소 공간의 논리적인 세그먼트(Segment)마다 베이스와 리밋
세그먼트 방식은 다양한 세그먼트 크기로 인해 공간이 단편화되어 할당이 점점 어려워지는 문제가 있었다. 페이징(Paging) 방식은 주소 공간을 일정한 크기로 분할하여 사용하기 때문에 외부 단편화 문제를 해결할 수 있다. 프로세스의 논리 주소를 고정 크기 단위(Page)
운영체제가 물리 메모리 한계를 넘기 위해서 어떤 기법을 사용하고 있는지 알아본다. 추가로 필요한 페이지가 물리 메모리에 없을 때 동작 과정과 물리 메모리가 가득 찼을 때 페이지를 어떻게 교체하는지 살펴본다.현대 가상 메모리는 물리 메모리뿐만 아니라 디스크 일부분을 스왑
파일 시스템 기술을 보기 전에 기반이 되는 디스크의 상세한 동작을 이해하도록 하자. 디스크 특성에 따른 디스크 스케줄링 알고리즘에 대해서도 알아본다.외부에서는 디스크의 내부 구성요소를 모른다. 디스크 드라이브는 디스크의 단위 저장 공간들을 외부 블록(logical bl
대부분의 시스템에서 운영체제는 파일의 구조를 모른다. 운영체제 파일 시스템의 역할은 어떤 저장 장치에 해당하는지, 어떤 파일 형식인지에 구애받지 않고 그저 데이터를 디스크에 안전하게 저장하고 되돌려준다. 이는 운영체제가 다양한 저장 장치를 파일(file)이라는 동일한
파일 시스템이 발전해나가는 과정을 보며 각 파일 시스템에 핵심적인 특징을 살펴본다. 파일 시스템이 데이터를 관리하기 위해 어떤 자료구조를 사용했는지, 왜 이런 파일시스템이 등장했는지, 무슨 문제가 있었는지를 중점으로 파악한다. 파일 시스템 1. UNIX File S