목록전체 글 (168)
Kim Seon Deok
하나의 프로세서는 프로세스 실행을 위해 여러 하드웨어 자원을 필요로 하고 os는 이 자원들을 잘 분배해야 한다. 배분이 잘 안된다면 데드락에 빠지게 된다. 어떤 자원은 가지고 있으나 다른 프로세서가 사용중이라 다른 자원을 갖지 못할 때에는 대기해야 한다. 데드락은 어떤 자원을 가지고 있으면서 다른 자원을 가지려 대기할 때 발생한다. 교착상태 (Deadlocks) 필요조건 1. Mutual exclusion (상호배타) → 한 프로세서가 특정 하드웨어를 사용하면 다른 프로세스는 사용하지 못함. 2. Hold and wait (보유 및 대기) → 어떤 자원을 보유하고 있으면서 다른 자원을 기다리는 것. 3. No Preemption (비선점) → 어떤 자원을 보유하고 있으면서 다른 자원을 강제로 뺏어오는 것..
전통적 동기화 1. Producer and Consumer Problem 생산자가 일단 데이터를 생산하면 buffer에 저장하고 소비자는 buffer에 저장되어 있는 것을 소비한다. buffer가 꽉차면 buffer가 소비자에 의해 비워질 때까지 생산자는 버퍼에 데이터를 저장할 수 없다. buffer가 완전히 비면 소비자는 데이터를 빼내올 수 없다. buffer는 데이터를 모아둘 수 있는 메모리 혹은 디스크 공간이다. → 용량이 유한하다. → Bounded Buffer class Buffer { int[] buf; int size; int count; int in; int out; Buffer(int size) { buf = new int[size]; this.size = size; count = in ..
운영체제에서 중요한 것 → 프로세서 관리 CPU 스케줄링 → FCFS, SJF, priority scheduling, Round Robin, Multilevel queue, Multilevel feedback queue 프로세스 동기화 쓰레드란? 쓰레드는 프로그램 내부의 흐름, 맥이다. 하나의 프로그램에는 기본적으로 하나의 스레드가 존재한다. → 단일 스레드 방식 기존 os는 일정시간이 지나면 다른 프로세서로 넘어가는 형태이다. → context switching 단위 : 프로세서 현재 os는 일정시간이 지나면 프로세서 내부 다른 쓰레드로 넘어간다. → context switching 단위 : 쓰레드 스레드는 프로세서의 코드와 데이터가 포함된 메모리를 서로 공유한다. 하지만 스위칭되면 다른 스레드로 가야..
배열의 선언 및 초기화 둘 이상의 변수를 모아 놓은 것 다수의 데이터를 저장하고 처리하는 경우 유용하게 사용할 수 있는 것 배열 선언에 필요한 것 배열 이름 자료형 길이 정보 배열의 위치정보를 명시하는 인덱스 값은 1이 아닌 0부터 시작 int arr1[5]; // 길이가 5인 1차원 배열 int arr2[3][4]; // 세로 3, 가로 4 인 2차원 배열 int arr3[3][4][5]; // 깊이 3, 세로 4, 가로 5인 3차원 배열 int arr4[] = {1,2,3,4,5,6,7} // 배열 선언 및 초기화 len = sizeof(arr4) / sizeof(int) // 배열 arr4의 길이 계산 배열의 크기 → sizeof(arr) → 바이트 단위의 배열 크기 배열의 길이 → sizeof(배..
프로그램 : 하드디스크에 실행되지 않고 내장되어 있음 프로세스 : 프로그램이 메인 메모리에서 실행되고 있음 cpu는 프로세서와 소통하고 cpu의 시간을 나눠준다. new → ready → running →wating → ready → running → teminated new → ready → running →wating → ready → running → teminated time expired가 추가되어 일정 시간이 지나면 강제로 다른 프로그램으로 스위칭된다. PCB (Process Control Block) = Task Control Block PCB는 os 안에 process management 안에 있으며 프로세서에 대한 모든 정보를 담고 있다. 1 프로세서 당 1 PCB를 가지고 있다. PC ..