목록운영체제 (8)
눈송이의 개발생활
교착상태(Deadlock) 2개 이상의 프로세스 or 스레드가 서로가 가진 리소스(자원)를 기다리는 상태 무한정 기다리며 벗어나지 못함 데드락 만드는 필요충분 조건 Mutual Exclusion : 리소스를 공유해서 사용할 수 없음 Hold and Wait : 프로세스가 이미 하나 이상의 리소스를 갖고 있는 상태(hold)에서 다른 프로세스가 사용 중인 다른 리소스를 추가로 기다리는 것(wait) No Preemption : 리소스 반환은 오직 그 리소스를 취득한 프로세스만 가능. 강제로 자원을 뺏을 수 없음 Circular Wait : 프로세스들이 순환 형태로 리소스를 기다리는 것 해결 방법 1️⃣ 방지/예방(Prevention) 4가지 조건 중 하나가 충족되지 않게 시스템 디자인 자원 낭비가 가장 심..
CPU 스케줄링 CPU 스케줄러 : CPU에서 실행될 프로세스 선택하는 역할 Dispatcher : 선택된 프로세스에게 CPU 할당하는 역할 (context switching, user mode 전환 등) 언제 어떤 프로세스에 CPU를 할당할지 결정하는 작업 CPU 스케줄링 평가 기준 CPU 이용률(CPU Utilization) 시간 당 CPU 사용한 시간의 비율 CPU가 항상 일을 할 수 있게 해야 함 처리율(Throughput) 시간당 처리한 작업의 비율 단위 시간 당 완료되는 작업 수 많아야 함 반환시간(Turnaround Time) 프로세스가 생성된 후 종료되어 사용하던 자원을 모두 반환하는 데까지 걸리는 시간 작업이 준비 큐(ready queue)에서 기다린 시간부터 CPU에서 실행된 시간, I..
IPC(Inter Process Communication) 프로세스 간 통신 컴퓨터 내부에서 프로세스들끼리 효율적으로 정보를 주고 받기 위한 통신의 일존 프로세스는 통신을 위한 별도의 공간 필요 커널 영역에서 IPC 제공 → IPC 설비 이용해서 프로세스 간 통신 가능 종류 1️⃣ 공유 메모리(Shared Memory) 공유 메모리가 데이터 자체를 공유하도록 지원 여러 프로세스가 메모리 영역 공유해서 사용할 수 있게 허용 프로세스가 공유 메모리 할당을 커널에 요청하면 커널이 해당 프로세스에 메모리 공간 할당 공유 메모리는 모든 프로세스가 접근 가능 메모리 자체를 공유하기 때문에 불필요한 데이터 복사의 오버헤드 발생 ❌ IPC 방법 중 가장 빠름 (중개자없이 바로 메모리에 접근할 수 있기 때문) 동기화 필..
PCB(Process Coontrol Block) 운영체제 커널 자료구조 (프로세스의 상태 정보 저장) 운영체제가 프로세스를 표현한 것 프로세스가 생성될 때 고유의 PCB 생성되고 프로세스가 완료/종료되면 PCB는 삭제됨 프로세스가 CPU 점유해서 작업하다가 반환해야 할 때, 처리하던 작업을 PCB에 저장하고 이후에 다시 CPU를 점유하게 되면 저장해놨던 정보를 PCB로부터 다시 받아와서 작업 진행 프로세스 상태 관리와 문맥 교환(context switching)위해서 필요 빠르게 PCB에 접근하기 위해 Process Table 사용 PCB 정보 1️⃣ Pointer 프로세스의 현재 위치 저장하는 포인터 정보 2️⃣ Process State 프로세스의 상태(생성(New), 준비(Ready), 실행(Run..
커널 모드(Kernel Mode)와 사용자 모드(User Mode) 하드웨어적인 보안은 유지하기 위해 2가지 모드로 운영 CPU 내부의 mode bit으로 구분 (0* : 커널 모드 / 1* : 사용자 모드) 커널 모드(Kernel Mode) OS가 존재하는 부분을 PC register가 가리키고 있는 경우 운영체제에서 코드 실행중인 상태 CPU는 커널 모드에서 수행중 모든 종류의 명령 다 실행할 수 있음 사용자 모드(User Mode) 사용자가 올라가 있는 메모리의 위치를 PC register가 가리키고 있는 경우 사용자가 프로그램 수행중인 상태 CPU는 유저 모드에서 수행중 제한적인 명령만 수행 (시스템에 중요한 영향을 미치는 연산 ❌) 인터럽트(Interrupt) ❓ 인터럽트란? 시스템에서 발생한 ..
🗝️ 개념 및 키워드 제어권 : 코드 실행 권리. 제어권을 가지면 코드를 실행한 후 자신을 호출한 함수에게 돌려줌 결과값 기다리는 것 : A함수가 B함수를 호출했을 때, B의 결과를 기다리는지의 여부 Blocking : 자신의 작업을 하다가 다른 주체가 작업을 시작하면 끝났때까지 기다렸다가 다시 자신의 작업 시작하는 것 Non-Blocking : 다른 주체의 작업에 관련없이 작업을 수행하는 것 Synchronous : 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작 Asynchronous : 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음 블로킹(Blocking) / 논블로킹(Non-Blocking) 제어권에 대한 것 프로세스의 유휴 상태에 대한 개념 처리되어야 하는 하나..
프로그램과 프로세스 프로그램이 실행되면 프로세스는 각 메모리 공간을 시스템으로부터 할당 받음 프로그램의 실행 = 파일 시스템에 존재하던 실행 파일이 메모리에 적재 = 프로그램이 CPU를 할당받고 명령 수행하고 있는 상태 프로세스 메모리 영역 (= 가상 메모리) 1️⃣ Code 프로그램에 내장된 코드 영역 수정 불가능한 기계어로 저장 (Read Only) 정적 영역 2️⃣ Data 전역변수, static 변수 등(프로그램이 사용하는 데이터) 저장됨 정적인 특징 갖는 프로그램 종료되면 사라지는 변수다 저장된 영역 전역변수나 static 변수 참조한 코드는 컴파일 완료되면 data 영역의 주소값 가르킴 전역변수 변경 가능 (Read-Write) 정적 영역 BSS 영역 초기화되지 않은 변수 0으로 초기화되어 저..
프로그램 : 어떤 작업을 라기 위해 실행할 수 있는 파일 or 프로그램 프로세스 : 메모리에 적재되서 CPU 자원을 할당받아 프로그램이 진행되고 있는 상태 프로세스(Process) 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 OS로부터 시스템 자원 할당받는 작업의 단위 CPU 스케줄링의 대상이 되는 작업(task) 프로그램이 메모리에 올라가면 프로세스가 됨(= 인스턴스화) 💡 특징 프로세스 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당 받음 기본적으로 1개의 프로세스는 1개의 스레드를 가짐 각 프로세스는 별도의 주소 공간에서 실행 됨 ⇒ 다른 프로세스의 메모리에 접근할 수 ❌ 다른 프로세스에 접근하기 위해서는 프로세스 간 통신(IPC) 사용해야 함 프로세스 메모리 구..