운영체제는 사용자의 편의성과 높은 성능을 제공하기 위해 컴퓨터의 하드웨어를 관리하는 프로그램이다.사용자와 하드웨어 사이의 중간 매개체로 응용프로그램의 실행을 제어하고, 자원을 할당 및 관리, 입출력 및 데이터 관리 등의 서비스를 제공해 준다.
CPU가 직접 입출력장치에 데이터를 가져오거나 내보내는 방식이다. CPU가 입출력장치의 상태를 주기적으로 계속 검사하여 어떠한 조건을 만족할 때 데이터를 처리한다.반복적인 모니터링 작업으로 인해 작업의 효율이 떨어지기 때문에 오늘날의 다양한 프로세스를 처리하기에는 적합
한 컴퓨터를 여러 사람이 동시에 사용하는 환경에서 사용자의 실수 또는 고의적인 피해는 컴퓨터와 프로그램에 전체적으로 악영향을 끼친다. 이러한 피해를 줄이고자 이중모드를 사용한다.이중모드는 사용자(user) 모드와 관리자(supervisor) 모드로 나뉜다.(관리자 모드
운영체제의 주된 목적은 사용자의 편의성과 높은 성능을 제공하는 것이다. 이러한 목적을 이루기 위해 운영체제는 다양한 방법으로 하드웨어를 관리하고 있으며, 상황에 맞는 서비스를 제공하고 있다.다양한 상황에 사용되는 운영체제의 서비스는 아래와 같다.프로세스 관리주기억장치
프로그램(Program): 컴퓨터에서 어떠한 작업을 할 수 있도록 만들어진 집합체로 H/W에 잠들고 있다. (동작 X) 프로세스(Process): H/W에 있는 프로그램이 운영체제에 의해 메모리에 적재되어 실행 중이거나 대기 중인 상태의 프로그램을 프로세스라고 한다.
2개 이상의 프로세스가 메모리에 적재되어 작업을 기다릴 때 CPU가 어떤 작업을 진행할지 순서를 결정하는 것을 CPU Scheduling이라 한다.(메모리에 적재된 프로세스를 순차적으로 작업하는 방법이 가장 이상적이고 간단하지만, 작업 간의 효율적인 자원 할당 및 공유
쓰레드(Thread)란 프로그램 내부의 흐름, 맥으로 하나로 CPU 스케줄러가 CPU에 전달하는 작업 중 하나이다. (프로세스의 최소 단위이다)쓰레드는 프로세스의 메모리 공간을 공유(code, data)하며, 프로세스의 자원(file, I/O...) 또한 공유한다. 하
동기화(Synchronization)란 2개 이상의 프로세스(Process) 또는 쓰레드(Thread)가 공유 메모리에서 어떠한 작업을 수행할 때 각자의 작업을 시기에 맞게 수행하는 것을 동기화라 한다.간단한 예로 A(쓰기) 프로세스와 B(읽기) 프로세스가 Shared
프로세스가 작업을 진행하기 위해서는 필요에 따라 CPU, 메모리, 파일, 하드웨어 등 다양한 자원이 요구된다.A프로세스와 B프로세스가 작업을 진행하기 위해서는 X자원과 Y자원이 요구된다. X자원은 A프로세스가 가지고 있고, Y자원은 B프로세스가 가지고 있다고 할 경우
Main memory는 ROM과 RAM으로 나누어져 있다.ROM(Read Only Memory): 기억된 내용을 읽기만 가능한 장치로 전원의 공급이 끊어져도 그 내용을 기억하는 비휘발성 메모리 (메모리에서 일부의 공간을 차지한다)RAM(Random Acess Memor
과거 수 MB~수십 MB의 용량을 가지던 메모리는 용량이 적으면서 비쌌기 때문에 메모리 관리가 매우 중요했다. 현재 우리가 사용하는 메모리의 용량은 수 GB ~ 수백 GB까지 용량의 크기가 대폭 증가 했음에도 여전히 메모리 관리가 중요하다. 그 이유는 과거에 사용하던
운영체제의 목적 중에서 효율성을 찾아볼 수 있다. 이는 즉 메모리를 낭비하지 않고 효율적으로 사용하는 것이 의미하기도 한다.동적 적재(Dynamic Loading)는 프로그램이 실행에 있어 꼭 필요한 루틴/데이터만 적재하는 방법이다. 필요한 루틴 또는 데이터가 호출되기
연속 메모리 할당 방식은 크고 작은 빈 공간 때문에 메모리의 효율성이 떨어졌다. (빈 공간을 합치는 방법이 있지만 오버해드 발생 때문에 효율이 떨어진다) 이러한 문제를 해결하기 위해 나온 방식이 페이징(Paging)이다.페이징(Paging)은 비연속 메모리 할당 방식으
페이징(Paging)은 물리적으로 프로세스를 일정 크기 잘라서 메모리에 할당하는 방식이었지만, 세그멘테이션(Segmentation)은 논리적 내용을 기반으로 프로세스를 잘라서 메모리에 할당하는 방법이다.프로세스를 논리적으로 나눈 것을 세그멘트(segment)라 부르며,
1. 페이징 VS 세그멘테이션 페이징(Paging)과 세그멘테이션(Segmentation)은 메모리의 빈공간(hole)을 찾아 할당하는 방식은 서로 비슷하다. 하지만 페이징은 프로세스를 일정한 크기로 나누지만, 세그멘테이션은 일정하지 않은 크기로 프로세스를 나눈다.
가상 메모리(Virtual Memory)란 메모리를 관리하는 방법으로 물리 메모리 크기의 한계를 극복하기 위해 나온 기술이다. 즉, 물리 메모리보다 큰 프로세스를 수행하기 위해 나온 기술인다.
가상 메모리 환경에서 메모리 적재는 요구되는 페이지만 backing store(H/W 디스크)에서 가져온다. 프로그램 실행이 계속됨에 따라 점차 요구하는 페이지수가 증가하면, 언젠가는 메모리의 용량이 가득 차게 된다.메모리가 가득 차게 된 상태에서 페이지 요구가 추가되
프레임 할당(Allocation of Frames)의 목표는 페이지를 어떻게 프레임에 할당해야 효율적으로 할당할지 결정하는 것이 주된 목표이다.일반적으로 메모리에 올라가는 프로세스가 증가할수록 CPU의 이용률은 증가한다. 하지만 일정 범위를 넘어서면 빈번하게 page
파일 시스템(File System)은 저장매체(보조기억장치: HDD 등)의 데이터를 효율적으로 관리하기 위해 만들어진 운영체제 관시 시스템의 한 종류이다.블록(Block)은 운영체제가 저장장치의 데이터에 접근하기 위한 가장 작은 단위이다. 블록의 크기는 사용자의 선택에
디스크 스케줄링(Disk Scheduling)은 분산되어있는 데이터를 액세스하기 위해 디스크 헤드를 움직이는 경로를 결정하는 기법 (트랙(track)의 이동을 최소화하여 탐색 시간을 줄이는 것이 가장 큰 목적)디스크에 접근하는 시간은 Seek time + rotatio