운영체제 관련한 내용을 정리합니다.

25 items under this folder.

  • 운영체제에 대한 정의, 역할에 대해 알아본다. 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 일반적으로 사용하는 모든 프로그램은 운영체제에서 그 자원을 관리한다. 목적 운영체제를 사용하는 가장 큰 목적은 하드웨어의 관리이다.

  • 일괄처리부터 시분할시스템, 최근의 고급운영체제, 인터럽트에 기반한 현대 운영체제까지 변천 역사를 알아본다. 1. 초기 컴퓨터 노가다, 사람 손도 많이가, 장치도 엄청커, 비싸기도 비싸 운영체제는 컴퓨터가 발전하면서 같이 발전하게 되었다.

  • 운영체제의 사용자모드와 관리자모드, 하드웨어 보호 관해서 알아본다. 1.

  • 운영체제의 주요 서비스: 프로세스, 메모리, 파일관리, 시스템 호출에 대해 알아본다. 운영체제의 주요 서비스는 하드웨어 자원을 각 사용자 애플리케이션에 적절히 분배해주는 것이다.

  • 프로세스의 정의, CPU 스케쥴러, 멀티 프로그래밍에 대해 알아본다. 1. 프로세스(Process) 프로세스는 메인 메모리에 할당되어 실행중인 상태인 프로그램을 말한다. 프로그램은 일반적으로 하드디스크(보조기억장치)에 저장되어 아무 일도 하지 않는 상태이다.

  • CPU 스케쥴링에 대해 알아본다. CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다.

  • Thread에 대해서 알아본다. 쓰레드(Thread) 쓰레드는 프로그램 **내부의 흐름(맥)**이다.

  • 프로세스 동기화가 발생하는 예시와 목적, 그리고 그것을 해결하기 위한 원칙에 대해 알아본다. 1.

  • 2. Bank Account Problem(은행 계좌 문제) 동기화의 필요성을 가장 잘 느낄 수 있는 은행 계좌 문제에 대해 알아본다. 2.1 문제 설명 동기화 문제 중에서 대표적인 은행 계좌 문제를 살펴보자. 은행에는 하나의 계좌에 입금, 출금을 할 수 있다.

  • 3. 임계구역(Critical section) 문제 위의 예에서 보았던 문제를 임계구역 문제라 한다. 임계구역은 여러 개의 쓰레드가 수행되는 시스템에서 각 쓰레드들이 공유하는 데이터(변수, 테이블, 파일 등)를 변경하는 코드 영역을 말한다.

  • 프로세스 동기화 도구에 대해 알아본다. Semaphore(세마포) Semaphoresms 깃발이라는 네덜란드 단어이다. 옛날에는 기찻길에서 공유하는 길이 있을 때, 깃발 표식으로 오고감의 신호를 주고 받았다.

  • 생산자-소비자 문제는 생산자가 데이터를 생산하면 소비자는 그 데이터를 소비하는 형태의 문제이다. 컴퓨터 환경에서 예를 보면, 컴파일러 -> 어셈블러, 웹 서버 -> 웹 클라이언트 등이 있다.

  • Readers-Writers 문제는 대표적으로 공통 데이터베이스에 접근하는 경우가 있다. 하나의 데이터베이스에 여러 프로세스(readers, writers)가 접근하므로, 데이터베이스는 임계구역으로 설정해야한다.

  • 식사하는 철학자 문제는 원형 테이블에 5명의 철학자와 5개의 젓가락이 있는 상황이 있다고 하자. 각 철학자는 생각하고 식사하고 생각하고 식사하고를 반복한다. 단, 식사를 하기 위해서는 2개의 젓가락이 필요하다. 이 상황을 프로그래밍을 해보자.

  • 교착 상태는 어떠한 자원을 갖고 있는 상황에서 문제가 발생한다. 자동차 교차로를 생각해보자. A자동차도 신호를 받았고, B 자동차도 신호를 받았다. 그래서 두 자동차가 움직이는 것에 논리적 오류가 없지만, 두 자동차가 갈 수 없는 상황이 발생한다.

  • 현재 사용하는 동기화 도구인 모니터(Monitor)에 대해서 알아본다. 세마포는 실제로 매우 오래된 동기화 도구이다. 현재에는 모니터(monitor)라는 동기화 도구를 주로 사용하며, 이는 좀 더 고수준의 동기화 기능을 제공한다. 1.

  • 운영체제에서 중요한 부분인 메모리 관리 기능에 대해 알아보자. 메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다.

  • 외부 단편화를 해결하는 방법인 페이징(Paging)에 대해 알아본다. 1. 페이징(Paging) 외부 단편화로 인한 메모리 낭비는 매우 심하다는 것을 살펴보았다.

  • 프르세스를 논리적 내용을 기반으로 나누는 세그멘테이션(Segmentation)에 대해 알아본다. Segmentation 지금까지 살펴본 페이징은 프로세스를 물리적으로 일정한 크기로 나눠서 메모리에 할당하였다.

  • 가상 메모리(Virtual Memory)에 대해 알아본다. 가상 메모리는 물리 메모리 크기의 한계를 극복하기 위해 나온 기술이다. 즉, 물리 메모리보다 큰 프로세스를 수행하기 위해 가상 메모리를 사용한다.

  • 페이지 교체 알고리즘에 대해 알아본다. 1. Page reference string 페이지 교체 알고리즘을 살펴보기 전에 Page reference string 이라는 용어를 알아야 한다.

  • page를 메모리에 할당하는 프레임 할당에 대해 알아본다. 1. Global VS Local Replacement Global Replacement 메모리 상의 모든 프로세스 페이지에 대한 교체 작업을 수행한다.

  • 위 그림은 하드디스크의 구조이다. platter 실제 데이터를 기록하는 자성을 가진 원판이다. platter는 그림과 같이 여러 개가 존재하고 앞뒤로 사용할 수 있다. 한 platter는 여러 개의 track으로 이루어져 있다.

  • 보조 기억 장치에 저장되는 파일의 할당에 대해 알아본다. 컴퓨터 시스템 자원 중 가장 중요한 것은 CPU이다. CPU 자원 관리에 대해서는 맨 처음 부분에서 다루었으며 CPU 스케줄링, 프로세스 동기화 등에 대해서 배웠다.

  • 하드 디스크의 구조를 바탕으로 스케쥴링을 하는 방법에 대해 알아본다. 1. 디스크 스케줄링 보조기억장치는 현재 여러 가지 존재하지만 아직까지는 하드 디스크가 주로 사용된다. 하드 디스크의 구조는 앞서 살펴봤듯이 위 그림과 같다.