전체보기154 14. [Deadlock Problem] : Deadlock 문제는 언제 발생하는가 Deadlock은 흔히 차선이 하나뿐인 도로 위에 마주보고 오도가도 못하는 자동차들에 비유를 한다. 1차선 도로에 두 자동차가 마주보고 서있다면, 두 자동차 중 하나는 차를 뒤로 빼주어야 한다. 이를 프로세스에 비유하자면, deadklock 문제가 발생하였을 때 프로세스들은 자원을 preempt 하고, rollback 해야 한다. Deadlock 문제는 특정 자원(resource)을 잡고 있으면서, 동시에 다른 특정 자원을 사용하기 위해 기다리는 blocked process 들에 의해 발생한다. 문제를 접근할 때 두가지만 기억하면 된다. 자원을 잡고 있는 (Holding), 자원을 기다리는 (Waiting). 모든 프로세스는 자원을 request 하여 --> hold 하여 사용하고 --> 사용을 다 하면.. 2019. 5. 11. 12. [Processor Scheduling(1)] : Scheduling 의 기본 개념 운영체제 공부에서의 스케줄링은, Request 들이 Server 의 처리를 기다리며 Queue 를 이루는 'Queueing model' 이 기본이 된다. 아래 그림을 보자. Request 는 파란색 큐에서 wait 하고 있고, Server 는 active 하게 그것들을 처리한다. 여기서 Server 의 종류를 두가지로 나눌 수 있다. nonpreemptible, preemptible server. preemptible을 직역하면 선점하는. 뭐 이런 뜻이다. 1. Nonpreemptible Server : 대표적으로 프린터의 예시를 기억하면 쉽다. 프린터는 A 라는 문서를 뽑는중에 B 라는 문서를 갑자기 뽑아내지 않는다. 아무리 B 를 뽑는게 더 급하더라도 말이다. 무조건 먼저 하던 작업을 끝내고, 순서대.. 2019. 4. 14. [아무말#6] 겁쟁이 이야기 어제 오랜만에 토슈즈 클래스를 들었다. 성인 반이기도 했고, 아이들이 참여하기엔 살짝 늦은 시간이었는데 어제는 처음보는 초등학교 3,4학년 쯤 되어보이는 여자아이가 수업에 함께했다.토슈즈를 처음 신는 거라고 하던데 작은 발로 어찌나 동작들을 잘 따라하던지.보는 내내 너무 신기했고 처음 본 아이지만 대견하기까지 했다. 선생님은 아이가 처음부터 잘 따라하는 이유가 '겁이 없어서' 랬다. 모든 동작에 능숙해보이는 발레리나들을 무대 아래에서 보았을 때는 어, 되게 아프겠다, 뼈를 깎는 아픔이겠구나 라는 생각 이상으로는 못했던 것 같은데, 막상 실제로 토슈즈를 신어보니 문제는 겁이었다. 토슈즈로 갈아신으면 발목이 돌아가면 어쩌지, 미끄러지면 어쩌지. 겁이 몸을 지배해버려서 근육둘이 온통 소심해진다. 아이보다 조금.. 2019. 3. 9. 11. [Multithreading(2)] : Thread 의 적용, User-level Threading 과 Kernel-level Threading Thread 를 적용하는 방법에는 두가지가 있다. OS 즉 커널 레벨 쓰레드가 쓰레드를 관리하는 것과 user 레벨(프로세스 내)에서 쓰레드를 관리하는 방법이다. user 레벨에서도 쓰레드의 적용이 가능한 이유는, 한 프로세스 내의 쓰레드들은 같은 메모리 공간을 공유하며, 오직 SP, PC, 레지스터와 같은 부분만 차이나기 때문이다. User-level Threading : 커널은 쓰레드의 존재를 알지 못한다. 프로세스 내의 Thread library 가 쓰레드에 관한 매니징을 모두 담당한다. 쓰레드의 관리에 있어서 커널이 아예 관여하지 않기 때문에 모드 스위칭이 적게 일어나 굉장히 가볍게 쓰레딩을 할 수 있다. 하지만 이러한 경우, 하나의 쓰레드만 작동을 멈춰도 그 프로세스 자체가 block 되며, .. 2019. 2. 6. 10. [Multithreading(1)] : 스레드의 등장 지난 정리까지 프로세스의 구조에 대해 상세하게 알아보았다. 프로세스는 크게 Image 와 Process context 로 나뉘었으며, ① Image 안에는 stack, heap, data, code 가 있었고 ② Process context 안에는 프로그램이 현재 어디까지 돌렸는지 가리키는 Program context 와 Kernel의 정보를 담는 Kernel context 가 있었다. 아래 그림을 참고해서 기억을 더듬어보자. Multiprocessor 의 등장으로 Multiprocessing이 가능해졌지만, 전통적인 프로세스 구조로는 한 프로세스가 오직 한 프로세서만 이용할 수 있기 때문에 Multiprocessing의 이점을 가져올 수 없었다. 새로운 프로세스를 생성하기 위해서는 커다란 자료구조를 복.. 2019. 2. 6. 9. [Process Communication] : 프로세스들은 어떻게 소통할까 하나의 프로세스 당 하나의 프로세스만 돌아가도 된다면 참 행복하겠지만, 사용자는 한번에 여러가지 일을 수행하고 싶어하기 마련이다. 이에 따라 프로세스 간의 충돌을 최소화하고 멀티 프로세싱에서의 효율을 높이는 것이 OS 의 고질적인 과제가 되었다. 프로세스 간의 소통에는 다음과 같이 2가지가 메인 목표이다.① Communication : data exchange - 같은 메모리 안에 있는 자료를 서로 다른 두가지 이상의 프로세스가 사용할 때 어떻게 자료를 관리할 것인가② Synchronization : 프로세스 간의 순서 매기기, 동기화 하기 2가지를 만족시키기 위해서 Application Programming (shared memory) 혹은 IPC (interprocess communication) 을.. 2019. 1. 31. 8. [Execution of the Operating System] : OS 가 움직이는 방법 OS 가 어떻게 생겨먹었는지, 어떻게 움직이는지를 알아보자. 좀 추상적이긴 하지만 OS 설계에 대한 3가지 대표적인 접근법이 있다. ① Execution within User Processes: 유저프로세스의 일부로 kernel 이 위치하고 있다는 접근. OS가 Program Image와 직접적으로 연결되어 있다는 접근법이다. 이 설계방법에서는 각 프로세스에서 인터럽트, 시스템 콜 같은게 일어났을 때 process switching 을 완전히 안해도 mode switch만으로 기능을 수행할 수 있다는 장점이 있다. 위 그림처럼, 프로세스의 일부처럼 OS 가 붙어있고 오직 프로세스 스위칭을 할 때에만 큰 오버헤드를 가지게 된다. 하지만 가용한 유저메모리가 줄어든다는 단점이 있다. 지금 공부하고 있는 리눅.. 2019. 1. 30. 7. [Process Switching] : 프로세스 스위칭, 프로세스 순서매기기 프로세스 스위칭에 다가가기 앞서, Dual mode operation 을 복습해보자.User mode 는 유저 프로그램이 실행되는 모드였고, Kernel mode 는 조금 더 높은 권한을 가지는, 프로세서의 기능을 완전히 제어할 수 있는 모드였다. (참고로 Kernel은 영어로 알맹이, 핵심 뭐 이런 뜻이다.) - 정말 간단한 복습 끝두가지 모드를 복습한 이유는.. mode switching 없이는 process switching 이 일어나지 않기 때문이다. mode switching은 말그대로 mode 가 바뀔때마다 일어난다. User mode 에서는 ① external interrupt (timer, I/O interrupt 와 같이 진행 중인 프로세스와 관계없는), ② Internal Trap (.. 2019. 1. 30. 6. [Process State, Scheduling] : 프로세스의 상태와 스케쥴링 프로세스는 항상 5가지의 상태 중에 하나를 가지게 된다. 아래 발그림 + 설명을 통해 자세히 알아보자. ① 프로세스가 막 생성되었을 때 New 라는 상태를 가진다. ② 생성 후에 Admit 되면 Ready 상태로 넘어간다. Ready 상태에 있다는 것은 프로세서가 그 프로세스를 맡게 되기 까지 대기하는 것이며, 'ready queue' 에 서 기다리는 상태이다. ③ 대기 중인 프로세스가 순서가 되면 프로세서에 의해 그 프로세스의 instruction 이 실행된다. 이 과정을 Dispatch 라고 하며 이 때 프로세스의 상태를 'Running' 이라고 한다. 실행 중이던 프로세스가 프로세서에 할당된 시간을 다 썼다면 'Timeout' 상태가 되어 다시 Ready queue 로 돌아간다. ④ 실행 중이던 프.. 2019. 1. 30. [아무말#4] 땅콩캔디 이야기 지루한 대학 강의를 듣고 있노라면 입이 자주 심심해 진다. 그래서 사탕이나 젤리를 좋아하는 나는 책가방 앞 주머니에 한움큼씩 땅콩캔디를 넣어 다니곤 했다. 그렇게 입이 심심할 때나, 내가 좋아하는 친구를 만났을 때, 잠깐 만난 사람이 피곤해 보일 때, 혹은 나한테 작은 선의를 보인 사람이 있을 때. 하나씩 꺼내서 나 하나 먹고는 사탕 먹을래? 하곤 했다. 그러면 대부분의 사람들이 뜻밖의 행운을 만난듯이 환하게 웃는다. 오늘은 땅콩캔디가 다 떨어져 쉬는 시간에 사러 갔는데 매점에 땅콩캔디가 없었다. 원래 이 곳에서는 팔지 않았었나? 아니면 사는 사람이 나밖에 없어서 이제 안 파나? 약간은 시무룩해져 아쉬운대로 망고젤리를 사봤다. 약간은 촌스러웠던 땅콩캔디의 포장지와 달리 색이 쨍하고 고급진 불투명한 개별포.. 2019. 1. 29. [아무말#2] 2048 이야기 [아2048 은 내가 4년째하고 있는 게임이다. 이제는 너무 유명해서 모르는 사람도 거의 없을 걸. 심지어 모바일도 아니고 PC 로만 4년째. 2048 을 하고 있노라면 어쩜 이렇게 실력이 안늘지, 이럴수도 있는건가 싶게 실력이 한결같다. 나도 4096 한 번 만들어보게 해주라! 2018. 09.13 2019. 1. 29. [아무말#1] 노란 옷 이야기 노란 옷 이야기는 카페에서 심심해 하던 오랜 친구가 뜬금없이 나를 인터뷰하면서 나온 에피소드다. 오늘은 왜 노란 옷을 입으셨어요? (우습게도 우리는 상황극에 너무 몰입한 나머지 서로에게 존댓말로 문답하고 있었다.) 아침에 옷을 고르는 기준이 뭔가요? 이 질문에 대한 답 중에 노란옷 이야기가 있었다. 겨자색을 원래 제일 좋아하고, 그러다보니 자연스레 노란색(그 중 농도 짙은 겨자색) 옷을 자주 입게 되었다는. 대학교 조 발표 시간에 우리 조 담당 발표자 친구가 팀원 소개를 하다가 뜬금없이 (그리고 나에게 일절 예고없이) 나의 특징으로 '노란 옷을 좋아함' 이라고 TMI 대방출을 했고, 부끄럽게 난 그 순간에 마저도 노란 옷을 입고 있었다는 이야기. 2018.09.12 2019. 1. 29. 이전 1 ··· 9 10 11 12 13 다음 반응형