목록개발/운영체제 (12)
tlov
최근에 약 5주(8/16 ~ 9/13) 동안 jscode 모의면접으로 학습하는 운영체제 스터디에 참여했다. 취준을 본격적으로 시작하기에 앞서 3학년때 배웠던 운영체제를 제대로 한번 학습해 놓고 취준을 시작하면 추후에 면접을 준비할 때 좀 수월할 거 같아서 '명품 운영체제' 책을 구입했었는데, 막상 혼자 공부하려고 하니 당장 운영체제에 대한 중요도가 낮다고 생각되어 생각보다 진도가 안 나갔다. 그런 와중에 친구한테서 이런 스터디가 있다는 얘기를 들었고 면접도 한번 경험해보고 운영체제도 공부할 좋은 기회라 생각해서 신청하게 되었다. 활동 내용스터디는 총 5주동안 매주마다 모의 면접 예상 질문 리스트를 확인하고 금요일까지 해당 내용 범위를 공부한 뒤 금요일 오후 8시에 2시간씩 팀원들과 모의 면접을 진행하였..
이화여자대학교 (반효경, 2014) - 운영체제 Computer를 Host라고도 함. 여기에 붙어 host에서 처리된 결과를 내놓거나 디스크를 읽는 등의 작업을 한다. 해당 i/o device의 작업 수행을 위해서 device controller 라는 것이 붙어있고 이 controller는 작업을 처리하면서 생긴 결과를 local buffer에 저장한다. 그리고, CPU에게 완료된 작업을 알려주기 위해 인터럽트를 건다. CPU는 메모리에 올라와 있는 기계어 명령 4바이트를 하나씩 계속 수행한다. 메모리 어디 있는 기계어를 읽냐면 CPU 내의 레지스터에서 Program Counter라고 하는 것이 있는데 얘는 실행할 명령어의 메모리 위치를 가지고 있음. CPU가 해당 명령어를 수행하면 PC는 다음 명령어..
이화여자대학교 (반효경, 2014) - 운영체제 이번 챕터는 컴퓨터 시스템에서 하드웨어가 어떻게 동작하고 프로그램들이 하드웨어 위에서 어떻게 돌아가는지 설명하는 것이 목표이다. 컴퓨터 시스템 구조- Computer [CPU, Memory]- I/O Device [Disk, Keyboard, Printer, Monitor] 메모리는 CPU의 작업 공간이다. CPU는 매 쿨럭마다 메모리에서 기계어를 하나씩 읽어 실행한다. I/O 디바이스들은 별개의 디바이스들이다. 키보드, 마우스 같은 것은 두드리면 전기 신호가 들어가므로 input device, 프린터 같은 것은 결과를 출력하므로 output device이다. Disk는 input/output device 역할을 둘 다 수행한다. i/o device는 각..
이화여자대학교 (반효경, 2014) - 운영체제 운영체제란?컴퓨터 하드웨어 바로 위에 설치되어 하드웨어와 사용자 및 응용 소프트웨어를 연결하여 효율적으로 자원을 관리해 주고 자원에 대한 서비스를 제공하는 특별한 소프트웨어를 말한다. 좁은 의미의 운영체제 - 커널- 운영체제의 핵심 부분으로 메모리에 상주하는 부분 넓은 의미의 운영체제- 커널 뿐만 아니라 각종 시스템 유틸리티를 포함한 개념- 메모리에 상주하지 않고 독립적인 프로그램들이지만 운영체제 범위에 포함되는 것들 전공자 입장에서의 운영체제는 보통 '커널'만을 의미한다. 운영체제의 목적- 컴퓨터 시스템의 자원을 효율적으로 관리 (가장 큰 목적) - 프로세서, 기억장치, 입출력 장치 등 (하드웨어 자원) - 프로세스, 파일, 메시지 등 (소프트웨어 ..
동시다발적으로 실행되는 프로세스 또는 스레드들은 서로 협력하며 영향을 주고 받는다.이 과정에서 자원의 일관성을 보장해야 한다. 아래에서는 프로세스 단어만 언급하지만, 실제로는 스레드에도 적용되는 내용이다. 동기화의 의미공동의 목적을 이루기 위해서 동시에 협력하며 수행되는 프로세스들이 있다. 가령 워드 프로세서 프로그램이 있다면 맞춤법을 검사해주는 프로세스, 화면에 출력해주는 프로세스 등이 포함될 수 있다. 하지만 이러한 프로세스들이 마구잡이 수행되어도 괜찮을까? 아니다. 올바른 수행을 위해서는 프로세스들이 동기화 되어야 한다. 왜냐면, 자원의 일관성을 보장해야 하기 때문이다. 동기화란 프로세스들의 수행 시기를 맞추는 것이다. 크게 두 가지로 나뉜다.1. 실행 순서 제어 : 프로세스를 올바른 순서대로 실행..
7가지의 CPU 스케줄링 알고리즘1. 선입 선처리 스케줄링2. 최단 작업 우선 스케줄링3. 라운드 로빈 스케줄링4. 최소 잔여 시간 우선 스케줄링5. 우선순위 스케줄링6. 다단계 큐 스케줄링7. 다단계 피드백 큐 스케줄링 1. 선입 선처리 스케줄링= FCFS(First Come First Serverd) 스케줄링 단순하게 준비 큐에 먼저 들어온 프로세스부터 처리하는 '비선점' 스케줄링이다. 이게 가장 직관적이고 공정해보이지만 굉장히 큰 부작용을 야기하는 알고리즘이다. 그 부작용은 프로세스들이 CPU를 할당받는 시간이 매우 길어질 수 있다는 것이다. 예를 들어 17ms의 실행 시간을 가진 프로세스 A, 실행 시간 5ms를 가진 프로세스 B가 차례대로 들어왔을 때 프로세스 B는 더 짧은 실행 시간을 가졌..
CPU 스케줄링?운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것이다. 해당 작업의 목표는 CPU가 쉬지 않고 주어진 시간동안 많은 작업을 하며 프로세스들간의 짧은 응답시간을 갖는 것이다. CPU 스케줄링은 다음과 같은 상황에서 발생한다.1. 실행 상태 -> 대기 상태2. 실행 상태 -> 준비 상태3. 대기 상태 -> 준비 상태4. 종료 상태 프로세스 우선순위어떤 방식이 가장 합리적인 CPU 스케줄링일까?가장 먼저 생각해볼 수 있는 방법은 CPU를 사용하고 싶어하는 프로세스들이 차례대로 CPU 자원을 할당받는 것이다. 하지만, 이 방법이 생각만큼 좋은 방법은 아니다. 왜냐면 빨리 처리해야 하는 프로세스들이 있기 때문이다. 즉, 프로세스마다 우선순위가 다르기 때문이다. 일반적으로 입..
스레드(thread)는 프로세스를 구성하는 실행 흐름의 단위이다. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다. 지금까지는 단일 스레드 프로세스를 상정하고 설명하였다. 하지만 현재 존재하는 프로그램은 대부분 여러 스레드를 가지는 멀티 스레드 프로세스이다. 스레드가 여러 개라면 프로세스를 이루는 여러 명령어를 동시에 실행이 가능하다. 그럼, 어떻게 스레드가 별도로 실행될 수 있을까? 어떻게 실행흐름 단위를 스레드로 나누어 실행할 수 있을까? 스레드의 구성요소스레드 ID, 레지스터 값, 스택 등실행에 필요한 최소 정보 스레드는 각각 스택, 레지스터 값들을 따로 갖고는 있지만 프로세스의 자원을 공유하면서 실행된다. 즉, 스레드 별로 어떤 메모리 공간이 할당되는 것이 아니라 프로세스에게 할당된 메모리..