본문 바로가기

학교 수업28

운영체제 || 9. Process Scheduling II 1. Priority Scheduling > 우선순위를 어떻게 할당하냐에 의해 알고리즘이 달라짐. > preemptive, non-preemptive 둘 다 디자인 가능 > 이 우선순위 알고리즘에 몇가지 문제가 존재함 a) Starvation 문제 >> 높은 우선순위가 계속 들어오게되면 낮은 우선순위를 가진 프로세스는 실행되지 못함 >> 해결방법으로는 ready queue에 있는 시간이 길어지면 일시적으로 우선순위를 높여주는 방법이 있음 b) Priority inversion problem >> 우선순위 역전 문제 >> 순위 높은순으로 진행해야하는데, 경우에따라 낮은 프로세스가 먼저 실행될 때가 있음. >> 가장 유명한 예시로 PathFinder > Low 프로세스에서 LOCK을 걸어서 HIGH 프로세스.. 2021. 4. 17.
운영체제 7 || thread (2 현대의 컴퓨터들은 코어의 개수가 올라강메 따라서 멀티스레딩을 좀 쉽게 할 수 있는 여러 방법이 고안됨 1. Implicit Threading 스레드를 만들고 관리하는걸 개발자가 직접 하는게 아닌 컴파일러와 런타임 라이브러리를 통해 OS의 도움을 받아서 관리하는것. 즉 개발자는 멀티스레딩을 고려하지 않아도 백그라운드에서 멀티 스레딩으로 변환됨 1-1. Thread Pools > 개발자가 스레드를 직접 만들긴 함, 하지만 라이브러리나 OS가 공간을 할당받고, 미리 정해진 개수의 스레드를 만듦 이러한 공간을 스레드 풀이라고 함. > 스레드 풀에서 만들어진 스레드들은 Sleep상태로 대기함 1-2. Fork Join > 멀티 스레딩은 결국 연산속도를 빠르게 하기 위함. > 분할 정복과 비슷한 매커니즘 > 메인 .. 2021. 4. 17.
운영체제 6 || 스레드(threads) 멀티프로세서 구조는 기본적으로 cost가 높음 -개발이 어렵다. -속도에 있어서 오버헤드가 있다. 위와 같은 문제들을 스레드가 해결해 줌 1. What is Thread? - 스레드는 CPU이용의 기본 단위 - 스레드는 프로그램에서 일련의 명령들을 실행함. 이 스레드는 두 가지 형태로 나뉘는데 a. 싱글 스레드 프로세스 - 스레드가 단일이라서 thread state가 하나만 존재함. - 이 싱글 스레드가 하나에 코어에만 매핑이 됨 b. 멀티 스레드 프로세스 - 스레드 여러개가 별도의 실행 흐름을 가짐 1-1. 스레드끼리 공유하는 것 - Code - Global variable - Opened files - Heap 1-2. 스레드 각자 가지고 있는 것 - Set of registers (Program C.. 2021. 4. 17.
운영체제 || 5. Inter Process Communication 시스템 안에 있는 프로세스는, 각자 독립적이거나 상호 협력적일 수 있어. 독립적인 프로세스는 당연히, 다른 프로세스에 영향을 줄 수 없지만, 협력적인 프로세스들은 영향을 줄 수 있지, 예를 들자면 이제 공유하는 데이터 같은게 있을테니까. 이 프로세스들이 독립적인 것 보다, 상호 협력적인게 장점이 많아. 첫번째, Information sharing : 데이터를 상호교환하기 떄문에 서비스의 품질이 올라가고 두번째, Computation speedup : 연산 속도가 당연히 올라갈 거고 세번째, Modularity : 프로세스에게 각각의 역할을 정해준다면, 프로세스는 각자가 필요한 코드만 들고 있을거고, 결국 유지보수에 장점이 있지. 마지막으로 Convenience : 한 Task를 한 프로세스로 할 떄 보다.. 2021. 3. 29.
운영체제 || 4. Process 오늘은 프로세스에 관해서 포스팅 할거야. 윈도우 쓰는 사람 중에 ctrl + alt + del 안눌러본 사람 있을까? 프로그램이 말을 안들어서 강제 종료할때 자주 쓰지 여기 보면 프로세스라는 탭이 있어. 그리고 목록들을 보면, 내가 실행해놓은 그리고, 이미 실행되어있는 프로그램들의 목록이 보여. 자, 대충 감이 오지? 프로세스는 이미 실행중인 프로그램을 말해. 프로그램은 디스크상에 저장되어있는 단순한 파일이야. 또 다른말로, 프로세스는 현재 실행중인 프로그램의 인스턴스라고 볼 수 있어 우리가 OOP를 할 때 보면, 한 클래스에 여러 오브젝트를 만들 수 있지? 여기서도 마찬가지로, 한 프로그램에 여러 프로세스가 있을 수 있어. 그리고 오브젝트들은 각각 고유한 이름(변수명)을 가지듯이, 프로세스도 고유한 이.. 2021. 3. 19.