컴퓨터 시스템은 간략하게 1개 이상의 CPU와 여러 장치들 그리고 CPU와 장치들의 중간역할인 bus로 구성되어 있다.
컴퓨터에 전원을 키면 ROM을 통해 OS를 확인하여 메인 메모리에 OS를 올린다. 이때 모든 OS코드가 올라가지 않고 시스템이 돌아가기 위한 부분만 먼저 올리는데 이 부분을 커널이라고 한다. 모든 코드를 올리지 않는 이유는 메모리 자원 낭비때문이다. 그리고 CPU는 메모리의 OS프로그램들을 읽어 OS를 실행한다. 부팅 후 시작되는 다른 프로그램들이 실행되면 메인 메모리에 올라가게 된다. 프로그램들은 I/O디바이스 사용이 필요할 수 있는데 이러한 요청은 운영체제한테 요청해야한다. 이러한 요청을 시스템 콜이라고 한다.
구조
CPU CPU는 3가지 장치로 구성되어있다. 연산을 수행하는 산술논리자이(ALU), 제어 명령을 전달하는 컨트롤 장치(CU), 결과값을 일시적으로 기억하는 레지스터(Register)
Memory ROM, RAM 등
I/O Device 사용자가 컴퓨터에 정보를 전달 및 출력하는 장치들. 예를들어 키보드, 마우스 등
인터럽트 OS에는 인터럽트가 발생했을 때 각각의 인터럽트에 대한 처리가 OS안에 코드로 작성되어 있다. 이 다양한 인터럽트에 대해 각각 처리해야할 업무들을 정의해놓은 것이 인터럽트 처리 루틴이다. CPU는 인터럽트가 발생하면 하던 일을 멈추고 인터럽트에 정의된 작업을 하게 된다. CPU가 사용자 프로그램 처리 중 인터럽트가 발생하면 사용자 프로그램의 현재 수행 중이던 주소와 부가적인 정보를 저장해야한다. (인터럽트가 발생하면 레지스터의 기존 데이터들이 지워지기 때문)
DMA(Direct Memory Access) 일반적으로 I/O디바이스들이 메인 메모리에 바로 접근할 수 없고 I/O디바이스들은 인터럽트를 발생시켜 CPU가 I/O디바이스들의 데이터를 읽어 메인 메모리 프로그램에 올린다. 하지만 CPU는 프로그램 명령어를 처리하는것 외에도 항상 다른 인터럽트에 대한 처리도 해야하기 떄문에 기존 CPU 작업들이 방해된다. 이러한 비효율성을 개선하기 위해 CPU대신 I/O디바이스들에 인터럽트를 처리할 컨트롤러를 하나 더 둔다. 이것이 바로 DMA 장치이다. DMA는 바이트 단위가 아니라 블록 단위로 데이터를 모아서 CPU에 인터럽트를 발생시킨다. 이러한 방법으로 CPU의 효율을 높일 수 있다.
저장 장치구조
주기억장치 주 기억장치는 보통 메모리라고 부르며 전원이 나가면 저장되었던 내용이 모두 사라져버리는 휘발성 메모리이다. RAM을 사용한다.
보조기억장치 전원이 나가도 저장되어 있는 비휘발성의 마그네킥 디스크이다. 보조 기억장치는 크게 파일 시스템용과 스완영역으로 나눠져있다. 파일 시스템 전원이 나가도 유지해야할 정보가 있으면 그것을 파일 형태로 보조기억장치에 저장한다. 스왑 영역 프로그램이 돌아가기 위한 핵심적인 부분만 메인 메모리에 올려놓고 나머지는 스왑영역에 두고 필요할 때마다 메인 메모리로 불러 사용한다.
계층구조 비휘발성 메모리는 용량과 속도에 따라서 여러가지 계층이 있는데, 제일 빠른것은 register(cpu내에 있어) ram은 빠르지만 이보다 cache메모리가 더빨라 ram보다는 용량은 적지만 빨라!!main memory가 우리가 흔히 아는 RAM!! SSD는 메모리 형태의 하드디스크 마그네틱테입은 백업용도로 (은행에서 5년전 10년전꺼 백업할떄 사용 ) 캐슁 기법이란 상대적으로 느린 저장장치에 있는 내용중에 당장 사용되거나 빈번히 사용될 정보를 빠른 저장장치에 선별적으로 저장하여, 두 저장 장치 사이의 속도를 완충 시키는 기법을 의미한다.
보안
하드웨어 보안 다중 프로그래밍 환경에서 다른 프로그램의 실행에 충돌이 일어날 수 있기 때문에 이러한 문제를 해결하기 위한 보안 기법이 필요하다. 하드웨어 보안을 유지하기 위해서는 사용자 모드와 커널 모드를 지원한다. 커널모드는 OS가 CPU의 제어권을 가지고 OS코드를 실행하는 모드로서 이 모드에서는 모든 종류의 명령을 다 실행할 수 있다. 사용자 프로그램이 CPU를 가지고 있는 동안에는 OS가 CPU를 선점할 수 없으므로 사용자 프로그램을 감시할 수 있는 방법이 없게 된다. 그러므로 이러한 상황을 방지하기 위해 모드비트라는 하드웨어적인 자원이 필요하다. 모드비트가 0이면 커널모드. 1이면 사용자모드를 의미한다.
메모리 보안 여러 프로그램이 메모리에 동시에 접근하기 때문에 다른 프로그램이나 OS가 위치하는 메모리 영역에 침범할 수 있다. 이러한 문제를 해결하기 위해 두 개의 레지스터(기준 레지스터, 한계 레지스터)를 이용해 현재 접근하려는 메모리를 체크함으로써 메모리를 보호한다. 기준 레지스터는 실행되고 있는 프로그램이 합법적으로 접근이 시작되는 메모리 주소를 보관하고 있다. 한계 레지스터는 해당 프로그램이 기준 레지스터로부터 접근할 수 있는 범위를 저장하고 있다.