개요 운영체제는 항상 한정된 자원을 두고 자신과의 싸움을 한다. ▼ 자원은 계속해서 늘어나고 있지만 자원이 늘어나는 만큼 더 많이 사용하게 되어 자원은 항상 부족하다. 프로세스가 구동이 되려면 메모리 자원과 CPU자원이 필요하다. 모든 프로세스가 자원을 원하는 만큼 가져가면 좋겠지만 그렇게 다 주기엔 자원이 모자르기에 누구에게, 얼마나, 얼마동안 줄 지를 결정해야한다. 이렇게 프로세스에게 자원을 주는 일련의 행위를 Scheduling, 해당 행위를 맡고있는 OS의 일부분을 Scheduler라고 부른다. Q. Scheduler의 정체가 정확히 무엇인지? 하드웨어? 아니면 프로세스? A. 스케쥴러는 하드웨어나 별도의 프로세스가 아닌 OS의 기능중 하나이다. Term에 따른 종류 스케쥴러는 term을 단위로 ..
프로세스(Process)란? 프로세스란 지금 실행하는 프로그램을 의미하며, 프로그램의 가장 기본적인 단위를 의미하기도 한다. 프로세스의 문맥(Context) 현재 혹은 특정 지점을 놓고 봤을 때 프로세스가 어디까지 수행됐는지, 프로세스를 실행시키기 위해 어떤 메모리 공간을 만들었는지, Program Counter가 어디를 가리키고 있는지를 알려주는 정보를 프로세스의 문맥이라고 한다. 프로세스의 요소 각 프로세스는 크게 아래의 2가지를 갖는다. address space(core image) process table entry 여기서 entry는 해당 프로세스를 수행하기 위해 필요한 정보와 나중에 수행하기 위해 필요한 레지스터 값과 상태를 저장한다. Entry보다는 Process Control Block이라..
개요 System Call 이란? System Call은 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 정말 간단하게 다시 말하자면, System Call은 커널에 접근하기 위한 수단 혹은 도구 이다. 그렇다면 우리는 커널에 왜 접근해야하는지를, 그리고 커널에 접근하는 수단과 도구가 따로 만들어진 이유를 알면 System Call에 대해 이해할 수 있다는 것이다. System Call이 필요한 이유 커널에 왜 접근해야할까? 우리가 일반적으로 쓰는 프로그램들은 OS, 시스템의 힘을 빌려서 만들어진다. 유저 레벨의 함수들로는 고차원적인 동작을 하는 프로그램을 만드는게 사실상 불가능하다. 그렇기에 커널(kernel)의 도움을 반드시 받아야 한다...
운영체제의 구조 운영체제의 구조는 아래의 부품들의 구조와 유사하다. 운영체제의 역할이 바로 이 하드웨어들을 다루는 것이기 때문이다. ▼ 그렇기에 각 하드웨어들의 입장에서 운영체제를 볼 수 있다. 각 하드웨어들의 입장에서 본 운영체제가 바로 운영체제가 하는 일이라고 볼 수 있다. CPU의 입장 CPU는 일을 처리하는 핵심 부품이다. 그렇다면 일을 어떤 순서로 처리해야 효율적이고 공평할까? 사회의 시선으로 보면 먼저 들어온 일 부터 처리하는게 공평하지만, 효율적이라고는 하기 힘들다. 은행업무를 예시로 보자. ▼ 사회의 관점에서는 먼저 온 사람부터 업무를 봐주는게 공평하고 당연한 처사다. 번호표를 뽑았으니까 말이다. 그런데 먼저 온 사람의 업무가 2시간이 걸린다면 그건 조금 낭패다. ▼ 뒤의 사람들은 기껏해야..
운영체제(Operating System) 운영체제란? 운영체제란 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층을 말한다.▼ 좁은 의미로는 커널이라고 말하고, 넓은 의미로는 커널뿐만 아니라 각종 주변 시스템 유틸리티를 포함한 개념을 말한다. 운영체제의 목적 운영체제의 목적은 크게 아래의 4가지가 있다. 컴퓨터 시스템의 자원을 효율적으로 관리 프로세서, 기억장치, 입출력 장치 등의 효율적 관리 사용자 및 운영체제 자신의 보호 프로세스, 파일, 메세지 등을 관리 컴퓨터 시스템의 자원들은 실행 도중에 추가되는 것들이 아니라 시작 전에 정해진 것들이다.▼ 메모리나 저장공간, 그리고 CPU의 성능까지 컴퓨터가 켜져있는 동안에는 바뀌지 않는다. 위에 운영체제..