목록CS/운영체제 (14)
-
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/9lbEq/btrniUKMUF3/eWKLesdUCLYw37ZQViyWg0/img.png)
이번 시간엔 프로세스 스케줄링이 일어날 때 여러 알고리즘에 의해서 수행되는데, 어떤 알고리즘이 있는지 어떻게 연산이 되는지 등을 알아보겠습니다. 다 정리하려면 굉장히 많겠지요??? 그래서 2가지 글로 나누어서 설명을 해보고자 합니다. 가능하면 한 개로 할 수 있으면 좋겠네요 첫 번째 FCFS (First-Come-First-Service)입니다. 쉽게 이해하자면 선착순입니다. 먼저 오는 프로세스에게 먼저 CPU를 할당해주겠다는 의미입니다. 따라서 비선점 스케줄링이라고도 합니다.(프로세스가 끝날 때까지 누구도 뺏을 수 없음) 그리고 스케줄링의 기준은 도착 시간을 기준으로 선택하고 먼저 도착한 프로세스를 먼저 처리하게 됩니다. 그러므로 자원을 효율적으로 사용할 수 있습니다. 왜 그럴까요? 자, 컴퓨터 공학에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lHLyO/btrnd5GhxQ7/4CCnVKeUkJS2WPdUquwot0/img.png)
지난 시간엔 스레드의 관리와 스레드의 개념에 대해 알아보았었습니다. 이번 시간엔 프로세스가 시스템에서 어떻게 스케줄링되어서 자원을 할당 받는지 공부하겠습니다. 중요한건 CPU에 할당 받는 부분에 대해서 집중적으로 한 번 알아보겠습니다. 우리가 프로세스 스케줄링을 왜 해야하는지 알고 계신가요??? 우리가 사용하는 시스템은 하나의 프로세스만 가지고 있지 않습니다. 즉 우리 시스템은 다중 프로그래밍이기 때문에 여러 프로세스가 존재합니다. 그렇기 때문에 자원을 나누어서 사용해야할 필요가 있습니다. 이를 적절하게, 효율적으로 사용하려면 자원을 할당 할 프로세스를 선택할 때 "스케줄링" 이라는 개념이 사용됩니다. 이 중 자원을 효율적으로 관리하기 위해 총 2가지로 나눌 수 있습니다. 시간 분할 관리 (time sh..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bEP2nT/btrm3PD1jAZ/7fewuTaysJW8kv4W2zRZSK/img.png)
지난 시간에 배운건 프로세스 관리에 대해 배웠습니다. 그 과정에서 컨텍스트 스위치를 이야기 했었고 컨텍스트 스위칭은 비용이 크기 때문에 가능한 줄이는 것이 좋다고 했었고 그 과정에서 바로 스레드가 있었습니다. 스레드의 뜻은 '실' 과 같습니다. 그럼 스레드가 운영체제에서는 어떻게 다루어지는지 이번 시간에 한 번 자세히 알아보겠습니다. 스레드를 얘기하려면 먼저 프로세스를 이해할 필요가 있습니다. 프로세스는 여러 형태로 정의가 되었었죠. 어떤 작업을 하는데 있어서 자원이 필요하기 때문에 그 자원을 제어하는 것. 그것이 프로세스의 역할입니다. 그렇다면 프로세스는 자원과 제어라는 두 가지로 나누어서 생각을 할 수 있습니다. 이 때 제어 부분을 따로 때놓고 고려할 때 이것을 스레드라고 할 수 있습니다. 보통 실 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KKWb5/btrm0qIQ4ev/x2OUETLy6n3IKUcugeG5T0/img.png)
인터럽트를 정희해보면 "예상치 못한, 외부에서 발생한 이벤트" 입니다. Unexcpected, external events라고도 부릅니다. 가장 대표적인게 I/O interrupt입니다. 예를들어 게임을 하는데, 게임 프로세스가 돌고있다고 합시다. 그럼 우리가 언제 총을 쏘고 언제 클릭을 할 지 프로세스가 알고 있나요? 그것을 I/O interrupt라고 합니다. 그 외에도 다양한 interrupt가 있지만 중요한건 인터럽트가 뭔지 알고 있어야 합니다. 그럼 이 인터럽트가 발생하면 어떻게 되는지 처리 과정을 알아보겟습니다. 프로세스가 돌고 있는데 누가 쿡 찌르면 어떻게 하나요? 인터럽트가 발생하면 이게 왜 발생했는지, 무엇이 쿡 찔렀는지 아니면 이걸 무시할건지를 결정해야 합니다. 인터럽스 서비스 할 것으..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/yUW8k/btrmXi6Hw3y/pc24b4LiK4XIQVsa7nokQ0/img.png)
지금까지 프로세스 이름을 많이 봐왔었습니다. 프로세스는 단순히 말해 '실행의 주체' 라고 정리하고 넘어왔습니다. 앞으로는 프로세스에 대해 좀 더 깊히 다루어 보겠습니다. 여러분들은 프로세스를 어디에서 보셨나요? 아마 안 보신 분들은 거의 없으실 겁니다. 윈도우즈 + Delete를 눌러 작업 관리자를 들어가면 이런 화면 보신 적 있으시죠?? 실제로 우린 프로세스를 아주 많이 사용하고 있습니다. 이 프로세스는 작업(Job)과 구분이 됩니다. 이 작업은 실행할 프로그램과 데이터라고 합니다. 즉 실행하기 전의 상태를 의미합니다. 반면에 프로세스는 실행하기 위해 커널에 등록된 작업을 일컫습니다. 잡과 프로세스를 그림으로 보면 이렇게 표현됩니다. 확실히 명확하지요?? 잡은 커널에 등록되지 않은 실행 요청하기 전의 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Y5g0S/btrmRvRQkR6/UhU0sgGfLKCJ1swjWLRBPk/img.png)
이전 시간의 포스팅에선 운영체제의 분류와 역사에 대해 알아보았습니다. 이번엔 작업 수행 방식에 따라 조금 다른 관점에서 살펴보겠습니다. 작업 처리에 제한 시간을 가지는 시스템을 우리는 실시간 시스템이라고도 부릅니다. 어떤 응답을 요청했을 때 제한 시간 내에 원하는 응답을 제공하게끔 유도하는 것으로서 자원 활용 효율보다 응답의 시간을 중요하게 여기는 시스템입니다. 이를 우리는 Real-time Systems라고 부릅니다. 이를 우리는 Hard real-time task와 Soft real-time task로 구분할 수 있습니다. 자 우리가 원자력 시스템을 관리하는 시스템을 개발한다고 가정하겠습니다. 그럼 온도를 1도마다 올라갈 때마다 알림이 뜬다고 했을 때 만약 이게 잘못되면 발전소가 사고가 날 수도 있습..