운영체제 관련한 내용을 정리합니다.
운영체제 관련한 내용을 정리합니다.
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. 디스크 스케줄링 보조기억장치는 현재 여러 가지 존재하지만 아직까지는 하드 디스크가 주로 사용된다. 하드 디스크의 구조는 앞서 살펴봤듯이 위 그림과 같다.