728x90

operating-system

    [운영체제] CPU 스케줄링 알고리즘 - 비선점형, 선점형

    💡 CPU 스케줄링 척도 1. CPU 이용률(CPU utilization): 시간당 CPU를 사용한 시간의 비율 2. 처리율(Throughput): 시간당 처리한 작업의 비율 3. 반환시간(Turnaround Time): 프로세스가 생성된 후 종료되어 사용하던 자원을 모두 반환하는 데까지 걸리는 시간 4. 대기시간(Waiting Time): 대기열에 들어와 CPU를 할당받기까지 기다린 시간 5. 반응시간(Response Time): 대기열에서 처음으로 CPU를 얻을 때까지 걸린 시간 -> CPU 이용률과 처리율은 극대화하는 것이 좋고 반환시간, 대기시간, 반응시간은 줄이는 것이 좋다 1. CPU 스케줄링 알고리즘 - 비선점형 비선점형 방식(non-preemptive)은 프로세스가 스스로 CPU 소유권을 ..

    [운영체제] IPC(Inter Process Communication) - 프로세스 간 통신

    IPC(Inter Process Communication) 독립적인 메모리 공간을 갖는 프로세스 간의 통신 기법 한 프로세스가 다른 프로세스의 자원을 사용하기 위해 동시에 접근 가능한 메모리 즉, 프로세스들이 공유하는 메모리가 필요 커널 영역에서 IPC라는 내부 프로세스 간 통신 설비를 제공 1. 공유 메모리 (Shared Memory) 공유 메모리(Shared Memory)가 데이터 자체를 공유하도록 설비 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당 모든 프로세스는 공유 메모리에 접근할 수 있음 Text와 Data 영역 사이 공유 메모리 포인팅 공간 (각 프로세스가 메모리 영역에 첨부되는 방식) 프로세스 간 Read, Write를 모두 필요로 할 때 사용 ..

    [운영체제] PCB와 문맥 교환(Context Switching)

    PCB (Process Control Block) 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지해야하는 정보들을 담는 커널 내 자료구조 커널 주소 공간의 data 영역에 존재 프로세스의 메타 데이터들이 저장되는 곳 Process ID Process 상태 CPU Regiter 값 CPU 스케줄링 정보 메모리 사용/관리 정보 등등 Linked List 방식으로 관리 PCB 생성마다 PCB List Head에 주소값으로 연결 PCB가 필요한 이유 CPU에서는 프로세스의 상태에 따라 주기적으로 프로세스를 교체해주는 작업이 필요하다. 이를 문맥 교환(Context Switching)이라고 한다. 문맥 교환 시 현재 CPU 상에서 실행되고 있던 프로세스의 정보(문맥)을 자신의 PCB에 저장하고..

    [운영체제] 유저모드(User-Mode)와 커널모드(Kernel-Mode), 인터럽트(Interrupt)와 시스템콜(System Call)

    유저 모드(User-Mode)와 커널 모드(Kernel-Mode) 커널에서는 중요한 자원을 관리하기 때문에 사용자가 해당 자원에 쉽게 접근하지 못하도록 보호하기 위해 나뉨 시스템에 중요한 영향을 미치는 연산은 커널 모드에서만 실행되도록 함으로써 하드웨어 보안 유지 프로세스가 실행되는 동안 유저 모드와 커널 모드를 반복적으로 넘나듬 유저 애플리케이션은 시스템 서비스를 호출할 때 유저 모드에서 커널 모드로 전환 유저/사용자 모드 사용자가 접근할 수 있는 영역을 제한적으로 두고 프로그램의 자원에 함부로 접근하지 못하도록 하는 모드 하드웨어 직접 접근 불가능 코드 작성, 프로세스 실행 명령 등 실행 가능 유저 애플리케이션 코드가 실행 커널 모드 모든 시스템 메모리 등 하드웨어에 직접 접근 가능 모든 CPU 명령..

    [운영체제] 동기/비동기(Sync/Async), 블로킹/논블로킹(Blocking/Non-Blocking)

    동기/비동기? 블로킹/논블로킹? 동기와 비동기, 블로킹과 논블로킹의 개념은 유사하게 느껴질 수 있지만 서로 바로보는 관점을 달리하고 있다. 동기/비동기는 일을 처리하는 순서(시점)와 결과(처리)와 관련있는 개념으로 이전 작업 종료와 동시에 시작하면 동기, 그렇지 않으면 비동기로 구분한다. 블로킹/논블로킹은 제어권과 관련있는 개념으로 함수 호출 시 제어권이 넘어가면 블로킹, 그렇지 않고 자신의 할일을 지속하면 논블로킹으로 구분한다. 동기(Synchronous) 작업을 동시에 수행하거나 동시에 끝나거나 끝나는 동시에 시작함 요청 작업의 종료 시점과 나머지 작업 요청 시작 시점의 동시성 호출한 함수의 작업 완료 응답이 필요해 작업 완료 여부를 계속해서 묻거나 응답을 기다림 호출한 함수의 작업 완료 여부에 대해..

    [운영체제] 프로세스와 스레드, 멀티 프로세스와 멀티 스레드

    프로세스(Process) 프로그램이 메모리로 올라와 운영체제로부터 CPU를 할당받고 실행되고 있는 상태 CPU 스케줄링의 대상이 되는 작업의 흐름을 지칭 하나의 프로그램(애플리케이션)은 하나 이상의 프로세스를 가짐 각 프로세스는 별도의 주소 공간에서 실행되고 프로세스끼리 지원을 공유하지 않기 때문에 다른 프로세스의 변수나 자료구조에 접근할 수 없음 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당 받음 스레드(Thread) 프로세스 내에서 실행되는 흐름의 단위 하나의 프로세스는 하나 이상의 스레드를 가짐 각각의 스레드는 프로세스 내에서 Stack 영역만 따로 할당받고 Code, Data, Heap 영역은 서로 공유함 멀티프로세스(Multi-Process) 하나의 애플..

728x90