프로그래밍

    운영체제 · 프로세스 스케줄링

    프로세스 스케줄링 (Process Scheduling) ✓ 정의 : 멀티 프로그래밍 환경에서 사용되는 것으로, 프로세스들에게 자원 할당을 적절히 함으로써 시스템의 성능을 개선하는 것✓ CPU 이용률을 극대화하여 다수의 프로세스를 처리할 수 있다. 스케줄러의 종류 ✓ 장기 스케줄러 (Long-term Scheduler)잡 스케줄러(Job Scheduler)라고도 하며, 디스크에 있는 프로세스들을 메모리로 적재하는 역할을 한다.즉, 장기 스케줄링은 생성된 프로세스들 중 어떤 프로세스에 메모리를 할당하여 준비 큐(Ready Queue)로 보내는 것이다.Unix, Microsoft Windows 등의 시분할 시스템에는 장기 스케줄러가 없다. ✓ 단기 스케줄러 (Short-term Scheduler)CPU 스케줄..

    운영체제 · 프로세스 간 통신

    프로세스 간 통신 (IPC, Inter Process Communication) ✓ 정의 : 프로세스끼리 자원이나 데이터를 서로 주고받는 행위 또는 그에 대한 방법이나 경로✓ 프로세스는 본래 독립적이나, 상황에 따라 프로세스끼리 협력해야 하는 경우가 있다. 이 경우, 프로세스 간 자원/데이터 공유가 필요한데, 이때 필요한 것이 IPC이다. IPC가 필요한 이유 ✓ 정보 공유 (Information sharing) : 여러 사용자가 동일한 정보를 필요로 할 수 있다.✓ 계산 가속화 (Computation speedup) : 특정 작업(task)를 빠르게 실행하기 위해, 해당 작업을 부분 작업(서브 태스크)으로 나눠서 병렬로 실행하게 할 수 있다. ✓ 모듈성 (Modularity) : 특정한 시스템 기능을 ..

    운영체제 · 문맥 교환 (컨텍스트 전환)

    컨텍스트 전환 (Context Switch) ✓ 정의 : 하나의 프로세스가 CPU를 점유한 상태에서, 다른 프로세스가 CPU를 사용하게 만들기 위해, 현재 프로세스의 정보(Context)를 저장하고, 새로운 프로세스의 정보를 CPU에 적재하는 작업✓ Context Switch를 직역하면 '문맥 교환'이지만, '컨텍스트 스위치' 또는 '컨텍스트 전환'으로 부르는 편이 명확하다.✓ 프로세스의 Context는 프로세스 제어 블록(PCB)에 저장되어 있다.✓ 문제점 : Context Switching 중에는 CPU가 작업을 수행할 수 없기 때문에, 문맥 교환이 잦으면 오버헤드가 커진다. Context Switch의 시점 ✓ 멀티 태스킹✓ 인터럽트 핸들링✓ 유저 모드와 커널 모드 간 전환

    운영체제 · 인터럽트, 트랩

    인터럽트와 트랩의 차이점 ✓ 인터럽트 : 하드웨어적 흐름의 변화 / 프로그램 외부(I/O 장치, 디스크 등)에서 발생하며, 발생 시점이 일정하지 않기 때문에 비동기적이다.✓ 트랩 : 소프트웨어적 흐름의 변화 / 소프트웨어 인터럽트라고도 하며, 프로그램 내부에서 일어나는 에러이다. 발생 시점이 프로그램의 일정한 지점이기 때문에 동기적이다. 즉, 고정된 영역에서 일어난다. 인터럽트의 종류 ✓ 하드웨어 인터럽트 (Hardware Interrupt) 인터럽트는 외부 인터럽트와 내부 인터럽트로 구분하는데, 외부 인터럽트를 하드웨어 인터럽트라 한다. 그냥 인터럽트라 하면, 일반적으로 하드웨어 인터럽트를 의미한다. 내부 인터럽트는 소프트웨어 인터럽트와 같은 개념이라고 보면 된다.외부 인터럽트는 프로그램 외부에서 일어..

    운영체제 · 프로세스 상태

    프로세스 상태 (Process State) 프로세스는 실행의 흐름에 따라 상태(스테이트)가 변한다. 상태를 정의하는 이름은 운영체제에 따라 다르지만, 대부분 서로 비슷한 개념으로 구성되어 있다. 프로세스의 흐름은 일반적으로 5개의 상태로 정의된다. 프로세스의 5가지 상태 ✓ 생성 (New) : 프로세스 생성 상태✓ 실행 (Running) : 프로세스가 CPU에 할당되어 실행 중인 상태✓ 준비 (Ready) : 프로세스가 CPU에 할당되기를 기다리는 상태✓ 대기 (Waiting) : 보류(Block)라고도 하며, 프로세스가 입출력이나 이벤트를 기다리는 상태✓ 종료 (Terminated) : 프로세스 종료 상태 프로세스의 상태 전이 ✓ 승인 (Admitted) : 프로세스 생성이 가능하여 승인됨.✓ 스케줄러..

    운영체제 · 프로세스 제어 블록

    프로세스 제어 블록 (PCB, Process Control Block) ✓ 정의 : 프로세스에 관한 다양한 정보를 가지고 있는 커널의 자료 구조✓ 작업 제어 블록(Task Control Block)이라고도 하며, 운영체제가 프로세스를 표현한 형태이다.✓ 프로세스에 관한 중요한 정보를 포함하기 때문에, 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 위치한다. 일부 운영체제에서는 커널 스택의 처음에 위치한다.✓ Linux 운영체제에서는 헤더 파일의 struct task_struct로 표현된다. /* PCB Example (task_struct) */ struct task_struct { volatile longstate; void*stack; atomic_tusage; intrecent_used_cpu..

    운영체제 · 멀티 스레드, 멀티 스레딩

    멀티 프로세스와 멀티 스레드의 차이점 ✓ 멀티 프로세스 : 독립적인 다수의 프로세스, 메모리 공간(코드, 데이터, 힙, 스택)을 공유하지 않음.✓ 멀티 스레드 : 하나의 프로세스 내에 존재하는 다수의 스레드, 메모리 공간(코드, 데이터, 힙)을 공유하지만, 스택 영역은 공유하지 않음. 멀티 스레딩 (Multi-threading) ✓ 정의 : 하나의 프로세스를 다수의 스레드로 구성하여 서로 자원을 공유하고, 이를 통해 자원을 효율적으로 사용하여 작업 처리 속도를 향상시키는 것✓ 각 스레드는 프로세스 내에 존재하며, 코드/데이터/힙 영역을 공유하면서 데이터를 주고받을 수 있다. 이러한 장점 때문에, 프로세스 간 통신(IPC)에 비해 통신 오버헤드가 적고 속도가 빠르다.✓ 멀티 스레딩을 통해 시스템의 처리량이..

    운영체제 · 멀티 프로세싱, 멀티 프로그래밍, 멀티 태스킹

    멀티 프로세싱, 멀티 프로그래밍, 멀티 태스킹의 차이점 ✓ 멀티 프로세싱 : 다수의 프로세서가 다수의 프로세스를 동시에 처리하는 것✓ 멀티 프로그래밍 : 다수의 프로세스를 메모리에 적재하여 프로세스를 번갈아가면서 처리하는 것✓ 멀티 태스킹 : 다수의 작업을 운영체제 스케줄링에 의해 번갈아가면서 처리하는 것 멀티 프로세싱 (Multi-processing) ✓ 정의 : 다수의 프로세서가 다수의 프로세스를 협력적으로 동시에 처리하는 것✓ 프로세서(Processor)는 CPU라고 생각하면 되며, 프로세스(Process)와 다른 개념이다.✓ 각 프로세서는 다수의 프로세스를 처리하며, 각 프로세스는 다수의 프로세서에 의해 처리된다.✓ 각 프로세서가 자원을 공유하면서 프로세스를 처리하기 때문에, 하나의 프로세서가 고..