목록전체 글 (151)
ultra_dev
교착 상태란? 대표적으로 식사하는 철학자 문제 예시 존재 철학자들이 원탁 테이블에 앉아있다. 계속 생각을 하다가 왼쪽 포크가 사용 가능하면 집어든다 계속 생각을 하다가 오른쪽 포크가 사용 가능하면 집어든다 왼쪽과 오른쪽 포크를 모두 집어들면 정해진 시간동안 식사를 한다 식사 시간이 끝나면 오른쪽 포크를 내려 놓는다 오른쪽 포크를 내려 놓은 뒤에 왼쪽 포크를 내려 놓는다 다시 1번부터 반복한다. 만약 이렇게 가정한다면 한 두명의 철학자만 식사할 때는 문제가 없지만 모든 철학자들이 동시에 이 순서로 식사를 하게 되면 누구도 식사를 할 수 없음 계속 생각만 하게 됨 왜냐하면 모든 철학자가 왼쪽 포크를 집어들면, 이후 오른쪽 포크를 들 수가 없음!! 오른쪽에 포크가 없으니!! 그래서 모든 철학자는 누군가 포크 ..
프로세스 동기화 동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고 받는다 이 과정에서 자원의 일관성을 보장해야 한다. 즉 프로세스들의 동기화를 고려해야 한다. 동기화 : 공동의 목적을 위해 동시에 수행되는 프로세스 ex) 워드 프로세서 프로그램은 맞춤법 검사 프로세스와 입력 내용을 화면에 출력하는 프로세스 등이 있는데 이걸 막 실행하면 안되고 올바른 수행을 위해 동기화 되어야 한다. (프로세스) 동기화란? :프로세스들의 수행 시기를 맞추는 것 1.실행 순서 제어 : 프로세스를 올바른 순서대로 실행 2.상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 이때 실행의 문맥을 갖는 모든 대상은 동기화 대상이기 때문에 스레드도 동기화 대상이다. 실행 순서 제어를 위한 동..
cpu 스케줄링 운영체제가 프로세스들에게 공정하고 합리적으로 cpu 자원을 배분하는 것 프로세스 우선 순위 프로세스마다 우선순위가 다르기 때문에 차례대로 돌아가며 하는 건 비효율적이다. ex) 입출력 작업이 많은 프로세스(=입출력 집중 프로세스)의 우선순위는 Cpu 작업이 많은 프로세스(=cpu 집중 프로세스)의 우선순위보다 높다. → 입출력 집중 프로세스는 실행 상태보다는 대기 상태에 더 많이 머무르게 될테니까 빨리 처리해버리고 cpu 집중 프로세스한테 몰빵하는게 효율적이기 때문 스케줄링 큐 : 자원을 이용하고 싶어하는 프로세스들이 서는 줄 큐라고 하지만 스케줄링에서의 큐는 반드시 선입선출 방식일 필요는 없다. cpu쓰고 싶어하는 프로세스들은 관련 스케줄링 큐에 넣어서 줄 세우고 하드디스크 쓰고 싶어하..
프로세스와 스레드 “실행중인 프로그램”, 프로세스 프로세스의 종류 포그운드 프로세스(foreground process) : 사용자가 볼 수 있는 공간에서 실행되는 프로세스 백그라운드 프로세스(background process): 사용자와 직접 상호작용이 가능한 백그라운드 프로세스와 사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스가 있다. → 데몬, 서비스라고 부름 : 사용자가 볼 수 없는 공간에서 실행되는 프로세스 모든 프로세스는 실행을 위해 cpu가 필요하다 → but, cpu 자원은 한정되어 있음!! 프로세스들은 돌아가며 한정된 시간 만큼만 cpu를 이용한다. 자신의 차례에 정해진 시간만큼 cpu 이용 타이머 인터럽트가 발생하면 차례 발생 프로세스 제어 블록(PCB) 빠르게 번갈아가며 ..