[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다. * 메모리 관리 - 프로세스들을 위해 메모리를 할당하고 제거하며 보호하는 활동 - 디스크에 있는 프로그램을 실행하기 위해 먼저 메모리에 적재한 후 메모리 관리자가 예약된 메모리를 할당해 주는 것도 해당됨 - 다중 프로그래밍 시스템에서는 여러 프로세스가 메모리에 상주할 수 있도록 운영체제가 동적으로 메모리를 세분화 하는 것도 해당됨 - 메모리 관리자는 메모리에 관련된 여러 정책을 수립하고, 정책에 따라 메모리를 관리함(주요 정책 : 적재 정책, 배치 정책, 대치 정책) * 적재 정책(Fetch Policy) - 디스크에서 메모리로 프로세스를 반입할 시기를 결정하는 것 - 요구 적재 : 운영체제나 시스템 프로그램, 사용자 프로그램 등 참조 요청..
[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다. * 선입선처리 스케줄링(FCFS, First Come First Served) - 선입선출 스케줄링(FIFO, First In First Out)이라고도 함 - 프로세서를 요청하는 순서대로 프로세서를 할당하며, 선입선출 큐로 구현함 - 비선점 스케줄링 장점 - 스케줄링의 이해와 구현이 단순함 - 준비 큐에 있는 모든 프로세스가 결국 실행되므로 기아 없는 공정한 정책임 - 프로세서가 지속적으로 유용한 프로세스를 수행하여 처리율이 높음 단점 - 비선점식이므로 대화식 프로세스(작업)에는 부적합함 - 장기 실행 프로세스가 뒤의 프로세스(작업)를 모두 지연시켜 평균 대기시간이 길어져 최악의 대기시간이 됨 - 긴 프로세스(작업)가 실행되는 동안 짧은 ..
[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다. * 스케줄링(Scheduling) - 여러 프로세스가 번갈아 사용하는 자원을 어떤 시점에 어떤 프로세스에 할당할지 결정하는 것 - 좋은 스케줄링은 프로세서의 효율성을 높이고, 작업(프로세스)의 응답 시간을 최소화하여 시스템의 작업 처리 능력을 향상 시킴 - 스케줄링이 필요한 프로세스 : 사용자 프로세스, 시스템 호출로 발생하는 시스템 프로세스 - 스케줄링이 필요 없는 프로세스 : 인터럽트 처리, 오류 처리, 사용자의 시스템 호출 등의 사전 처리가 대표적임 * 스케줄링의 목적 - 자원 할당의 공정성 보장 - 단위시간당 처리량 최대화 - 적절한 반환시간 보장 - 예측 가능성 보장 - 오버헤드 최소화 - 자원 사용의 균형 유지 - 반환시간과 자원..
[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다. * 교착 상태(Deadlock) - 시스템 자원에 요구가 뒤엉킨 상태로, 두 프로세스가 사용하는 자원(비공유)을 서로 기다리고 있을 때 발생함 - 다른 하나를 완료하지 않으면 프로세스를 더 이상 진행할 수 없고, 진행하지 않으면 프로세스를 완료할 수 없음 -> 따라서 둘 이상의 작업이 중단되고 프로세스들은 서로 사용할 자원을 기다리고만 있게 됨 * 프로세스 자원 사용 순서 - 자원 요청 : 프로세스가 필요한 자원을 요청하는데, 해당 자원을 사용할 수 있으면 요청을 즉시 수락하지만 해당 자원을 다른 프로세스가 사용 중이면 요청을 수락할 때까지 기다려야 함 - 자원 사용 : 프로세스가 요청한 자원을 획득하여 사용함. 예를 들어, 요청한 자원이 ..
[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다. * 병행 프로세스 - 운영체제가 프로세서를 빠르게 전환하여 프로세서 시간을 나눠서 마치 프로세스 여러 개를 동시에 실행하는 것처럼 보이게 하는 것 - 병행 프로세스는 독립 프로세스와 협력 프로세스로 구분함 - 경쟁 관계에 있는 프로세스들은 서로 정보를 교환하지 않지만, 한 프로세스의 수행이 나머지 프로세스의 수행에 영향을 미칠 수 있기 때문에 상호배제가 필요함 * 독립 프로세스 - 단일 처리 시스템에서 수행하는 병행 프로세스 - 다른 프로세스, 데이터와 상태를 공유하지 않고 동작도 재현 가능 - ex. 단일 프로그래밍, 다중 프로그래밍, 다중 처리 * 협력 프로세스 - 다른 프로세스에 영향을 주고받으며, 즉 상호작용하며 특정 기능을 수행하는..
[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다. * 스레드(Thread) - 프로세스의 두 가지 특성인 자원과 제어 중 제어만 분리한 실행 단위 - 프로세스 하나는 스레드 한 개 이상으로 나눌 수 있음 - 스레드들은 프로세스의 직접 실행 정보를 제외한 나머지 프로세스 관리 정보를 공유함 - 스레드는 Program counter (→ 실행 흐름), Register set, Stack space를 무조건 가지고 있음 - 스레드가 동료 스레드와 Code section, Data section, OS resources를 공유함 * 경량 프로세스와 중량 프로세스(LWP & HWP) - 경량 프로세스(LWP, Light Weight Process) : 스레드 중에서 프로세스의 속성 중 일부가 들어 ..
[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다. * 프로세스(Process) - 실행 중인 프로그램 -> 일반적인 정의 - 비동기적(Asynchronous) 행위 - 실행 중인 프로시저 - 실행 중인 프로시저의 제어 추적 - 운영체제에 들어 있는 프로세스 제어 블록(PCB) - 프로세서에 할당하여 실행할 수 있는 개체 디스패치(Dispatch)가 가능한 대상 - 프로세스가 실행 중인 프로그램이 되려면 프로세서 점유 시간, 메모리, 파일, 입출력장치 같은 자원이 필요함 -> 프로세스를 생성하거나 실행할 때 이 자원을 할당함 * 프로세스 메모리 구조 - 스택(Stack) : 데이터를 일시적으로 저장하는 영역 - 힙(Heap) : 코드 영역과는 별도로 유지되는 자유 영역 - 데이터(Data) ..
[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다. * 운영체제(Operation System) - 운영체제는 컴퓨터 시스템에서 사용자가 하드웨어에 접근할 수 있는 유일한 수단 - 사용자가 응용 프로그램을 실행할 수 있는 기반 환경을 제공하여 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 소프트웨어 * 컴퓨터 시스템 구성 - 사용자 : 어떤 일(작업)을 수행하려고 컴퓨터를 사용하는 사람이나 장치, 다른 컴퓨터를 의미함 - 소프트웨어 : 컴퓨터가 기능을 수행하는데 필요한 모든 프로그램을 의미하며, 아래 세가지로 구성됨 1) 시스템 소프트웨어 : 컴퓨터 자원을 관리하고 응용 프로그램의 실행을 지원하여 컴퓨터를 제어하는 프로그램 2) ..