컴퓨터 시스템의 구조
컴퓨터 시스템 연산(Computer-System Operation)

컴퓨터 시스템은 공유 메모리에 접근을 제공하는 공통 버스에 여러 장치들과 CPU가 연결되어 있습니다.
각 장치 제어기들은 특정 장치를 관리하고 있습니다.
CPU와 장치 제어기는 메모리 사이클(메모리 접근 권한(수정 등을 위한))을 얻기 위하여 경쟁하면서 병렬 수행할 수 있습니다.
어떤 장치가 수정하고 있는데, 다른 장치가 또 수정하면 안되잖아요?
따라서 공유 메모리에 대한 질서있는 접근을 보장하기 위하여, 메모리 제어기가 제공되고 이는 메모리 접근을 동기화 시키는 일 입니다.
컴퓨터가 처음 구동(전원 키기)된다면, 부트스트랩 프로그램(Bootstrap program)이 수행됩니다.
이 프로그램은 펌웨어라고 불리는 ROM(읽기 전용 메모리)이나 EEPROM(작은 수정이 가능한 ROM)에 저장되어 있습니다.
이 프로그램은 CPU 레지스터로 부터 장치 제어기, 메모리 내용 등을 포함한 시스템의 모든 면을 초기화합니다.
또한 부트스트랩 프로그램은 운영체제를 적재하는 방법 및 수행을 시작하는 방법을 알아야 합니다.
이러한 목적을 달성하기 위하여,
부트스트랩은 운영체제의 커널을 찾아 메모리에 적재해야 합니다.
커널은 "운영체제의 핵심부로 컴퓨터 자원들을 관리하는 역할"로 항상 메모리에 적재되어 있는 프로그램이죠.
따라서 커널이 적재되고 수행이 시작되면 이제야 사용자에게 서비스를 제공할 수 있게 됩니다.
일부 서비스는 커널에서 제공하는 것이 아닌 다른 시스템 프로그램에서 제공하는데, 이들은 부트 시 메모리에 적재되어 커널이 수행되는 동안 계속 수행되는 시스템 프로세스나 시스템 디먼(사용자의 직접적인 조작 없이 백그라운드에서 시스템 작업을 수행하는 프로그램)이 됩니다.
이 단계가 끝나고 시스템은 완전히 부팅된 상태이며, 어느 사건(event)이 일어나길 기다리게 됩니다.
사건이 일어나게 되면, 하드웨어나 소프트웨어로부터 발생한 인터럽트(Interrupt) 신호를 보내게 됩니다.

얘를 들면, 키보드를 치면 신호를 보내는 거죠.
하드웨어는 어느 순간이든 시스템 버스를 통하여 CPU로 신호를 보내 Interrupt를 발생시킬 수 있습니다.
하지만 소프트웨어는 바로 못하는데요, 따라서 시스템 호출(System Call)을 통하여 발생시켜야 합니다.
CPU는 인터럽트가 되면 하던일을 중단하고 인터럽트 서비스 루틴을 수행합니다.
루틴 후 다시 하던 일을 계속하죠.
운영체제의 구조
중요 : 다중 프로그램(Multiprogram)이 가능
일반적으로 단일 사용자는 CPU를 항상 바쁘게 유지할 수 없죠.
예를 들면 컴퓨터를 켜놓은 상태에서 아무것도 안하는 것과 같죠.
따라서 다중 프로그램은 CPU가 수행할 작업을 항상 하나는 가져놓도록 하는 작업을 구성함으로써 CPU 이용율을 증가시킵니다.
다중 프로그램(Multiprogram)
한 번에 여러 작업을 메모리에 적재합니다.
이 작업들은 디스크 내에 있는 작업 풀(Pool)에 저장되는데,
주 메모리에 작업들을 보관하기에는 너무 작아서, 디스크내에 저장 해 놓습니다.
따라서 메모리 내의 작업 집합은, 작업 풀 내의 작업들의 부분 집합과 같습니다.
이제 이 작업들 중 하나를 실행하여 시작하게 되는데
만약 작업을 실행하는 중(CPU 처리) 입출력이 들어온다면, CPU는 잠시 쉬어야 하는 경우가 있습니다.
이를 비다중 프로그램이라고 합니다.
다중 프로그래밍 시스템에서는 운영체제가 단순히 다른 작업으로 전환하여 그 작업을 수행하게 됩니다.
따라서 CPU는 이용율이 올라가게 되는 것 입니다.
시분할(또는 Multi-tasking)시스템
다중 프로그램은 여러 시스템 자원을 효율적으로 이용할 수 있지만, 사용자와 상호 작용은 제공하지 않습니다.
예를 들면 실시간으로 처리해야 하는 상황에서, 우선순위가 높지 않은 경우 등의 프로그램을 계속 돌리고 있는 것 이죠.
따라서 시분할(또는 Multi-tasking)시스템이 등장하게 됩니다.
예시로 1ms 작업을 하면 다음 작업을 하고, 다음 작업을 하는 식으로 하게 됩니다.
CPU가 다수의 작업들을 교대로 수행하게 됩니다.
따라서 사용자들은 각각 자기의 프로그램과 상호작용을 할 수 있게 되는 것 입니다.
시분할 시스템은 사용자와 시스템 간에 직접적인 통신을 제공하는 대화식 컴퓨터 시스템도 필요하게 됩니다.