-
컴퓨터 시스템 구성운영체제/개념 2020. 6. 3. 00:58
이전 포스터에서 컴퓨터 시스템은 대체로 하드웨어, 운영체제, 응용프로그램, 사용자 라고 했다.
이번 포스터는 컴퓨터 시스템의 구조와 관련한 여러 부분을 살펴보고자 한다.
컴퓨터 시스템 연산
오늘날 범용 컴퓨터 시스템은 하나 이상의 cpu와 다수의 장치 제어들로 구성되어 있으며 공용 버스로 연결된다.
이 버스를 통해서 '메모리 제어기'가 질서있는 접근을 통해 공용 메모리에 접근을 시킨다.
오늘날 컴퓨터 시스템 시스템 구동 부터 연산(요청처리) 까지 과정
컴퓨터가 구동을 시작하려면(전원on) 실행시킬 초기 프로그램이 필요한데 이를 '부트스트랩 프로그램' 이라고 한다.
전형적으로 읽기전용 메모리 ROM 이나 쓰기까지 가능한 EEPROM 에 저장이 되며 펌웨어라고 알려져 있다.
부트스트랩 프로그램은 cpu 레지스터, 장치 제어기, 메모리 내용 등을 포함한 모든 것을 초기화 한다. 그리고 운영체제 커널을 메모리에 적재하고 실행함으로써 시스템과 사용자 모두에게 서비스를 제공할 수 있게 된다.
일부 서비스는 커널이 아닌 시스템 프로그램에 의해 제공 되며 이를 '시스템 프로세스' 나 '시스템 데몬' 이 된다.
컴퓨터 시스템에서는 cpu에 어떤 요청을 할때 '사건이 발생' 했다고 한다.
이렇게 구동이 된 범용 컴퓨터는 사건이 발생을 기다리는데
사건의 발생여부는 하드웨어나 소프트웨어로부터 발생한 '인터럽트' 에 의해 전달 받는다.
인터럽트
하드웨어는 어느 때든지 시스템 버스를 통해 cpu에 신호를 보내 인터럽트를 발생시키고
소프트웨어는 시스템 호출(system call) 이라는 특별한 연산을 실행하여 인터럽트를 발생시킨다.
cpu는 하드웨어나 소프트웨어에게 '인터럽트' 되면 하던 일을 중단하고 다른 일을 하러 갔다가 다시 본인의 하는 일로 돌아와야한다. 이러한 일련의 작업을 '연산의 시간표(time line)' 이라고 한다.
인터럽트는 컴퓨터 구조의 중요한 부분이다. 각 컴퓨터의 설계마다 인터럽트 기법을 달리 가지고 있으며 공통적인 부분도 있다. 인터럽트를 빠르게 처리해야 하기 때문에 인터럽트 핸들러 주소를 저장한 테이블을 이용하여 처리하는데 이때 주소의 배열은 '인터럽트 백터'라고 한다.
이 인터럽트 백터가 전달되기 때문에 cpu가 작업하다가 다시 돌아올 수 있기도 하다.
저장장치 구조
전제 : cpu는 명령어를 오로지 메모리에서만 가져올 수 있다.
때문에 프로그램을 실행하려면 반드시 프로그램이 메모리에 있어야 하며 대부분은 메인메모리(RAM) 에서 가져온다.
(삼성의 DRam ㅎㅎ)모든 형태의 메모리는 바이트의 배열을 제공하는데 각 바이트는 자신의 주소를 가지고 있다.
메모리 주소들에 대한 일련의 적재, 도는 저장 명령을 통하여 전송이 이루어 지는데
적재 명령 : Ram 에서 cpu 내부의 레지스터로 바이트로 옮기는 것
저장 명령 : cpu 레지스터 내용을 메인 메모리로 옮기는 것
폰노이만 구조 시스템에서는 앞서 적재, 저장 명령으로 전형적인 '명령-실행' 사이클을 수행할 수 있다.
1. 먼저 메모리로부터 명령을 인출해 명령 레지스터에 저장
2. 명령을 해독하고 필요시 메모리로부터 피연산자 인출하여 내부 레지스터에 저장
3. 피연산자에 대한 명령을 실행한 후 결과를 다시 메모리에 저장
(작업 중 메모리장치는 메모리 주소만 신경쓴다)
메모리에 있는 프로그램을 실행하는 과정을 살펴 보며 메모리의 중요성을 알 수 있다.
하지만 아쉽게도 메모리는 용량이 적다는 단점과 휘발성 저장장치 라는 단점을 가졌기 때문에 보조저장장치 (HDD, SSD) 등이 필요하다.
참고로 저장장치는 다음과 같은 순서대로 빠르고 비싸다는 특징을 가졌다.
레지스터 > 캐시 > 주 메모리 > 반도체 디스크 > 자기 디스크 > 광 디스크 > 자기 테이프
입출력 구조
저장장치는 컴퓨터 내의 여러 형태의 입출력 장치 중에 하나이다.
시스템의 신뢰,성능의 중요성과 장치의 다양한 특질 때문에 운영체제 코드의 많은 부분들이 입출력을 관리하는데 할애된다.
위 그림에서 본 것 처럼 cpu를 비롯한 여러 장치 제어기들이 공통 버스로 연결되어 있는데 운영체제는 이 여러 장치 각각마다 디바이스 드라이버를 가지고 있다.
이 디바이스 드라이버는 장치 제어기의 동작을 이해하고 운영체제의 다른 부분들에게 장치에 대한 일관된 interface를 제공한다.
디바이스 드라이버는 입출력 연산을 위해 장치 제어기의 적절한 레지스터에 필요한 값을 적재하고 장치 제어기는 레지스터에 내용을 조사해 데이터 전송을완료한다. 그리고 디바이스 드라이버에게 인터럽트를 사용해서 완료했다고 통보하면 디바이스 드라이버는 운영체제에게 전달하여 데이터, 포인터를 반환할 수 있다.
(한마디로 화면에 뭔가 변화가 일어난다)이 방식은 적은 양의 데이터를 전송하는데 문제없으나 디스크 입출력과 같은 대량의 데이터를 전송하는데 부담이 된다.
때문에 이 문제를 해결하기 위해 '직접 메모리 접근 DMA' 장치가 사용된다.
별도의 고가 시스템의 버스 대신 스위치 구조를 사용하는데 DMA 가 적용이 될 때 더욱 뛰어난 효과를 얻을 수 있다.
'운영체제 > 개념' 카테고리의 다른 글
프로세스. 메모리. 저장장치. 관리 (0) 2020.06.08 운영체제 연산 (0) 2020.06.06 운영체제 구조 (0) 2020.06.05 컴퓨터 시스템 구조 (0) 2020.06.04 운영체제란? (0) 2020.06.02