[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/운영체제 33

[운영체제] 커널과 시스템호출

운영체제는 하드웨어와 매우 밀접하게 연관되어 있다. 특히 CPU내의 레지스터나 메모리 입출력장치 등과 같이 장치 자체가 운영체제의 기능과 접점을 이루는 경우, 해당 장치의 구조와 기능을 잘 알고 있어야 운영체제를 이해할 수 있다. 하지만 하드웨어 전체를 이해하기란 어려움이 있으므로, 컴퓨터 구조라는 개념으로 일반화(추상화)하여 공부해보고자 한다. 앞으로 커널과 시스템 호출부터 시작해서 커널이 외부세계와 접촉하는 입출력 시스템, 입출력시스템과 커널의 접점인 인터럽트의 구조와 기능, 캐시와 기억장치의 구조 등에 대해 공부하겠다. 커널 커널 : 이전에 배운 '상주모니터' 개념의 연장선 상에 있다. 운영체제의 핵심으로서 부팅 이후 메모리에 상주하는 부분이다. (사실 부팅 자체가 이러한 커널을 메모..

[운영체제] 다중 프로그래밍 / 시분할 시스템 / 실시간 시스템

다중 프로그래밍 메모리의 사용자영역에 프로그램이 여러개 탑재되어 있고, CPU가 이를 번갈아가며 수행한다. 어떤 프로그램을 수행하다 입출력이 발생하면 해당 입출력이 처리되는 동안 CPU가 다른 프로그램을 수행하는 방식이다. 여러 프로그램 중 어떤 프로그램을 선택할지는 '스케쥴링'을 통해 해결한다. 이는 적절한 정책을 통해 다음 프로그램을 결정해준다. 이러한 프로세스는 각 프로그램이 입출력이 발생할 때만 발생된다. 즉, 다른 프로그램으로 작업이 이동되려면 하나의 프로그램이 입출력이 발생해야 한다. 만약 하나의 프로그램에서 무한 루프가 발생된다면 스케쥴링도 일어나지 않아 나머지 프로그램도 돌아가지 않는다. 즉, 다중 프로그래밍 방식에서는 프로그램 간 간섭이 존재한다. 대부분의 프로그램 실행시간..

[운영체제] 운영체제의 필요성 / 일괄 처리 시스템

운영체제의 필요성과 목적 메모리나 CPU와 같은 자원은 한정되어 있지만, 사용자는 충분히 무한할 수 있다. -> 이에 따라 이러한 사용자들의 자원 사용을 조율하기 위한 '운영자의 정책'이 필요하다. 다양한 사용자를 받아들여 최적의 사용율을 보이는 '효율성'과 각각 사용자로서 하여금 불편함이 없을 만큼의 '편의성'을 둘 다 추구해야 한다. 하지만 이 둘은 결국 상반된 개념이다. 한 사용자의 편의성을 위해 자원을 한 사용자에게만 주면 결국 자원을 효율적으로 사용하지 못하는 것이고, 모두에게 자원을 똑같이 분배하면 사용자가 많아질수록 사용에 불편을 겪을 수 있기 때문이다. 따라서 이 두 양극의 최적점을 찾는 것이 중요하다. 정리하면 운영체제는 사용자 관점의 편의성, ..