운영체제는 HW와 응용프로그램 사이에서 인터페이스 역할을 하며 HW를 관리하고 시스템의 동작을 제어하는 시스템 소프트웨어이다.컴퓨터 시스템의 자원들을 효율적으로 관리할 수 있게 해주고, 사용자가 컴퓨터를 효과적이고 편리하게 사용할 수 있도록 환경을 제공해준다. 프로세스
Process실행중인 프로그램의 단위로, 디스크로부터 메모리로 적재되어 CPU의 할당을 받을 수 있다.프로세스 별로 각각 독립적인 메모리를 할당 받는다.프로세스가 오류로 중지되어도 다른 프로세스에게 영향을 주지 않는다.프로세스끼리 통신하기 위해서는 IPC, Socket
운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때만 메모리에 올려서 사용한다.이 때, 메모리에 상주하는 운영체제의 부분을 커널이라고 한다. 운영체제도 S/W 라서 메모리에 올라가야 하지만 규모가 큰 프로그램이기 때문
하나의 프로세스가 CPU를 사용중이던 상태에서, 스케줄러의 인터럽트 요청에 의해 다른 프로세스가 CPU를 사용할 수 있도록 하기 위해 이전의 프로세스의 상태(문맥, Context)를 저장하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.기존의 프로세스 상태 값은 커
한정적인 시스템 자원에 여러 개의 쓰레드/ 프로세스 가 동시에 접근하면 작업의 결과값이 처리 순서에 따라 달라지는 문제가 발생할 수 있다. 즉, 동기화의 목적은 데이터 일관성(Data Consistency)을 보장해주는 것이다.자원에 대한 처리 권한을 부여하거나 순서를
정의, 발생조건, 해결방법
인터럽트는 CPU 가 특정 기능을 수행하는 도중 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다.CPU 가 프로그램을 실행하고 있을 때, 입출력 H/W 등의 장치에 예외사항이 발생해 처리가 필요할 경우 CPU 에게 알려 처리할 수 있도록 하는 것을 말한다.
Systeam call1시스템 호출(System Call)은 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 보통 C, C++ 같은 고급 언어로 작성된 프로그램들은 직접 시스템 호출을 사용할 수 없기 때문에
세스가 시스템에서 실행 중인 다른 프로세스들에 영향을 주거나 받는다면 이는 협력적인 프로세스들이다. 프로세스 협력을 허용하는 허용하는 환경을 제공하는 데는 다음과 같은 이유가 있다.정보 공유(Information Sharing)여러 응용 프로그램이 동일한 정보(ex.
CPU 를 사용하려는 프로세스들 사이의 우선순위를 관리하는 작업으로, 어떤 프로세스에 작업을 얼마나 할당할 지를 결정한다.CPU 스케줄링은 I/O 같은 자원을 사용할 수 없어 프로세스가 waiting상태로 진입한 동안 다른 프로세스가 CPU 를 사용할 수 있도록 해준다
Job Queue : 현재 시스템 내에 있는 모든 프로세스들의 집합Ready Queue : 현재 메모리 내에서 CPU 를 할당받아 실행되기를 기다리는 프로세스들의 집합Device Queue : I/O 작업을 대기하고 있는 프로세스들의 집합프로세스는 종료될 때 까지 수
여러 개의 CPU 사용이 가능하면, 여러 스레드가 병렬로 수행될 수 있으므로 부하 공유(Load Sharing) 가 가능해진다.: 마스터 서버(Master Server) 라는 하나의 처리기가 모든 스케줄링 결정과 I/O 처리, 다른 시스템의 활동을 처리하게 한다. 그
프로그램은 원래 이진 파일의 형태로 디스크에 저장되어 있다. 프로그램은 로더(Loader)에 의해 메모리에 적재되어야 한다. 메모리 적재, 즉 메모리 바인딩에 대해서 알아보자.메모리 바인딩은 바인딩이 이루어지는 시점에 따라서 구분된다.프로세스가 메모리 내에 들어갈 위치
메모리는 크게 OS 를 위한 부분과 사용자를 위한 부분으로 나뉜다. 보통, 여러 개의 사용자 프로세스를 메모리에 상주시키길 원하기 때문에 프로세스들에게 메모리를 할당하는 방법에 대해서 생각을 해봐야 한다.프로세스는 상한 레지스터(limit register)와 재배치
메모리 단편화 외부 단편화 메모리가 적재되고 삭제되는 것이 반복되다 보면 어떤 가용 공간은 너무 작아져 버린다. 이렇게 메모리 가용 공간이 작은 조각들로 단편화되어서 합치면 프로세스를 할당하기에 충분하지만 실제로는 할당할 수 없는 현상을 말한다. 내부 단편화 프
가상 메모리 프로그램이 실행되기 위해서는 물리 메모리에 올라와 있어야 하지만 프로그램 전체가 한꺼번에 메모리에 늘 올라와 있어야 하는 것은 아니다. 다음과 같은 예시가 있다. 잘 발생하지 않는 오류 상황을 처리하는 코드들은 거의 실행되지 않는다. arra
메모리에 너무 많은 프로그램이 올라가 있어서 프로그램이 메모리를 너무 조금만 할당 받게 됨그 결과 페이지 폴트가 잦아짐 -> CPU 이용률 하락페이지 폴트를 처리하느라 정신이 없어짐프로세스의 원활한 수행에 필요한 최소한의 page frame 수를 할당 받지 못한 경우
페이지 수 증가페이지 테이블 크기 증가내부 단편화 감소Disk transfer 효율성 감소Seek/rotation vs transfer필요한 정보만 메모리에 올라와 메모리 이용이 효율적Locality 의 활용 측면에서는 좋지 않음=> Larger Page Size가 T
CPU : Memory의 instruction을 읽어서 처리하는 역할만 한다.register: Memory보다 빠른 저장공간을 가지고 있다.mode bit: instruction이 사용자 프로그램의 것인지 OS의 것인지를 구분하는데 사용된다.0 커널모드 : OS 코드
프로세스는 실행중인 프로그램을 말함프로세스의 문맥(context) : 프로세스의 상태, 시분할을 위해 프로세스의 상태를 파악하고 있어야 함코드의 어느부분까지 수행되었는가, 무슨 내용을 쌓아두고 있는가, 어떤 instruction까지 수행했는가CPU 수행 상태를 나타내는
스레드는 CPU의 실행 단위가 여러개가 있는 경우 그 실행의 기본 단위를 말한다.하나의 프로세스에 여러 개의 CPU 수행 단위를 두고 있는 것을 스레드라고 말함.프로세스는 메모리에 독립적으로 할당받기 때문에 여러 개의 프로세스를 띄우면 메모리 공간이 낭비된다. 이러한
부모 프로세스(parent process)가 자식 프로세스(child process)를 생성함프로세스의 트리 형성프로세스는 자원을 필요로 함OS로부터 받음부모와 공유자원의 공유부모와 자식이 모든 자원을 공유하는 모델일부를 공유하는 모델전혀 공유하지 않는 모델수행(Exe
CPU 스케줄링 CPU는 I/O burst 와 CPU burst를 연속적으로 반복하게 된다. I/O burst: I/O 작업을 기다리는 시간 CPU burst: instruction 수행 시간 I/O burst 의 발생이 잦아지면서 CPU burst 가
Race Condition Storage Box를 공유하는 Execution Box가 여럿이면 Race Condition의 가능성이 있음 e.g) Memory CPU : MultiProcessor system e.g) Address Space Proc
일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태Resource: HW, SW 등을 포함하는 개념I/O device, CPU cycle, memory space, semaphore 등등..데드락은 다음 4가지 조건을 모두 만족해야만 발생한다.Mutual
프로세스마다 독립적으로 가지는 주소 공간각 프로세스마다 0번지부터 시작CPU가 보는 주소는 logical address임 => 실행파일 안의 코드는 동일하기 때문에 CPU는 logical address를 봐야할 필요가 있음메모리에 실제 올라가는 위치가상 메모리의 논리적
들어가며 물리적 메모리로의 주소 변환은 OS가 관여하지 않지만, 가상 메모리 기법은 전적으로 OS가 관여한다 Demand Paging 실제로 필요할 때(= 해당 페이지가 요청됐을 때) page를 메모리에 올리는 것 I/O 양 감소 memory 사용량 감