데드락 (Deadlock) 여러 개의 프로세스나 스레드가 서로 자원을 점유하고 있어, 다음 단계를 진행하지 못하고 무한정 대기 상태에 빠지는 상황 즉, 각 프로세스나 스레드가 다른 프로세스나 스레드가 점유한 자원을 요청하면서 서로 자원을 점유한 상태에서 다음 단계로 진행하지 못하게 되는 것 데드락 조건 아래 4가지 조건이 모두 성립해야 데드락이 발생한다. 즉, 하나라도 성립하지 않으면 데드락 문제를 해결할 수 있다. 상호배제 (Mutual exclusion) : 자원은 한 번에 하나의 프로세스나 스레드에 의해서만 사용될 수 있다. 점유 대기(Hold and wait) : 최소한 하나의 자원을 점유한 상태에서 다른 자원을 요청하고 대기하는 프로세스나 스레드가 존재 한다. 비선점(No preemption) ..
CPU 스케줄링 운영 체제에서 다중 프로세스를 관리하고 CPU의 사용을 최적화하기 위한 방법 여러 프로세스가 CPU를 공유하는 다중 프로그래밍 환경에서 CPU 스케줄러는 어떤 프로세스가 CPU를 사용할 수 있는지 결정하고, 프로세스들 사이의 우선순위를 관리한다. 선점 스케줄링 vs 비선점 스케줄링 선점 스케줄링 (Preemptive Scheduling) 현재 실행 중인 프로세스가 다른 프로세스에 의해 강제로 중단되고, 다른 프로세스가 CPU를 차지할 수 있는 방식 우선순위가 높은 프로세스가 CPU 시간을 뺏어갈 수 있다. 실시간 시스템에서 중요하다. 프로세스의 응답 시간을 보장하고 우선순위가 높은 작업을 즉시 처리할 수 있다. 컨텍스트 스위칭에 따른 오버헤드가 발생할 수 있다. 종류 : SRTF, 우선순..
IPC (Inter Process Communication) 프로세스는 독립적으로 실행되는 단위이므로 기본적으로 다른 프로세스와의 통신이 어렵다. 이를 해결하기 위해 운영체제의 커널 영역에서 IPC 기능을 제공한다. IPC 종류 1. PIPE(Anonymous PIPE) 파이프는 두 개의 프로세스를 연결 하나의 프로세스는 데이터를 쓰기만, 다른 하나는 데이터를 읽기만 할 수 있다. 한쪽 방향으로만 통신이 가능하기 때문에 단방향 통신 또는 Half-Duplex(반이중) 통신이라고 부른다. 파이프는 하나의 통신 선로로 읽기 또는 쓰기 중 하나만 가능하므로, 송수신을 동시에 수행해야 하는 경우 두 개의 파이프를 사용해야 한다. 같은 부모 프로세스를 가지는 프로세스들 사이에서만 통신이 가능하다. 읽기/쓰기 중 ..
PCB (Process Control Block) PCB는 운영체제가 각 프로세스를 관리하기 위해 유지하는 자료구조이다. 각 프로세스마다 하나의 PCB가 할당되며, PCB에는 해당 프로세스에 대한 정보가 저장된다. PCB에 저장되는 정보 프로세스 식별자(Process Id) 각 프로세스에는 고유한 식별자가 할당된다. 프로세스를 식별하고 구분하기 위해 사용 프로세스 상태(Process State) 프로세스의 현재 상태를 나타낸다. new, ready, running, waiting, terminated가 있다. 스케줄링 및 운영체제의 상태 관리에 사용 프로그램 카운터(Program Counter) 현재 프로세스가 다음에 실행할 명령어의 주소를 가리키는 레지스터 값 프로세스가 중단되었다가 다시 실행될 때, ..
시스템 콜 (System Call) 시스템 콜 : 운영체제 커널의 기능을 사용하기 위해 사용자 프로그램이나 응용 프로그램이 호출하는 인터페이스 시스템 콜은 프로세스가 운영체제의 커널 모드로 전환되어 특정 기능을 수행하고, 이후 다시 사용자 모드로 돌아가 프로그램이 실행되는 원리로 동작한다. 시스템 콜 사용 운영체제가 제공하는 다양한 서비스와 리소스에 접근하기 위해 사용 ex) 파일 시스템 접근, 네트워크 통신, 메모리 관리, 프로세스 관리 등 시스템 콜은 운영체제의 기능을 사용하기 위해 특정 함수를 호출하는 형태로 제공된다. 시스템 콜 호출 방식 프로그래밍 언어의 라이브러리 함수나 시스템 인터페이스를 통해 간접적으로 호출 시스템 콜의 종류 1. 파일 관련 시스템 콜 open() : 파일을 열고 사용하기 ..
인터럽트 정해진 흐름 대로 CPU가 실행되고 있는데 이것을 끊는 것을 인터럽트라고 한다. 인터럽트의 종류 동기 인터럽트(예외) : CPU에 의해 발생하는 인터럽트이다. CPU가 명령어들을 수행하다가 예상치 못한 상황이 발생하면 동기 인터럽트가 발생한다. 비동기 인터럽트(하드웨어 인터럽트) : 특정한 동기화 신호 없이 다른 프로세스, 장치, 또는 외부 이벤트에 의해 발생 (ex. 전화/문자 메시지, 웹 브라우저의 팝업 창, 입출력장치 등) 하드웨어 인터럽트를 사용하는 이유는 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해서이다. 예를 들어 프린트를 하는 상황에서 만약 인터럽트가 없다면, CPU는 프린트 완료 여부를 확인하기 위해 주기적으로 확인해야 한다. 그러나 인터럽트가 있다면 입출력 작업 동안 ..
프로세스 (Process) 메모리에 올려져서 실행 중인 프로그램 각각의 프로세스는 독립된 메모리 공간, 자원, 상태 등을 갖는다. 독립된 메모리 공간에는 Text(Code), Data, Stack, Heap을 할당 받는다. 프로세스는 실행 중인 프로그램의 인스턴스로, 별도의 메모리 영역을 할당받고, 자체적으로 제어 블록인 PCB(Process Control Block)을 갖는다. PCB에는 id, register, PC 등이 있다. 응용 프로그램 ≠ 프로세스 응용 프로그램은 여러 프로세스로 구성 가능 프로세스 스테이트(Process State) 프로세스가 운영체제에 의해 관리되는 동안 어떤 상태에 있는지를 나타낸다. 프로세스의 상태는 다양한 상태 전이(Transition)에 따라 변경될 수 있다. new..
운영체제(Operating System, OS) : 컴퓨터 시스템의 핵심 소프트웨어로서, 하드웨어와 응용 프로그램 사이의 인터페이스 역할을 담당한다. 컴퓨터의 자원을 관리하고, 응용 프로그램의 실행을 조정하며, 사용자와 컴퓨터 간의 상호작용을 가능하게 한다. 운영체제의 역할 자원 관리 : CPU, 기억장치, 입출력장치, 프로세서, 파일 및 정보 등의 자원을 효율적으로 관리한다. 자원 보호 : 프로그램이나 다른 사용자가 데이터를 삭제하거나 중요한 파일에 접근하지 못하도록 컴퓨터 자원을 보호한다. 응용 프로그램 실행 : 프로세스 관리와 스케줄링을 통해 CPU 시간을 적절히 할당하고, 메모리 관리를 통해 프로그램이 필요로 하는 메모리 공간을 할당한다. 사용자와의 상호작용 : 사용자의 입력을 받아들이고 출력을 ..