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