-
운영체제 1: 컴퓨터의 구조와 운영체제의 역할과 구조CS기초/OS,HW 2021. 12. 8. 20:51728x90반응형
컴퓨터의 구조
폰 노이만 구조
컴퓨터 아키텍처로 1940년대 이후 지금까지 만들어진 거의 모든 컴퓨터가 이를 기반으로 한다. 폰 노이만 구조는 중앙처리장치(CPU), 메모리, 프로그램 세 가지 요소로 구성되어있다. CPU와 메모리는 서로 분리되어 있으며 둘을 연결하는 Bus를 통해 명령어 읽기, 데이터 읽기 및 쓰기를 처리한다. 이 전의 컴퓨터는(애니악 - ENIAC)은 새 입력을 넣을 때마다 손으로 직접 진공관 회로 스위치를 다시 조정해야하는 방식이었기 때문에, 폰 노이만 구조는 내장 방식 컴퓨터라는 점에서 의의가 있다.
예를 들면, 이전 컴퓨터는 1+1, 3-2 라는 두 가지의 명령을 수행하려면 하드웨어의 전선을 직접 1, 더하기, 1, 3, 빼기, 2를 의미하는 것으로 매번 바꿔 끼워 입력해야 했지만 폰 노이만 구조에서는 더하기, 빼기 기능을 담은 소프트웨어가 메모리 안에 내장되어 있습니다. 그래서 계산이 필요할 때마다 메모리 안의 프로그램과 데이터를 CPU에 전달하여 계산을 처리한다.
최초의 폰 노이만 구조는 내장 메모리 순차처리 방식을 따르고 있기 때문에 CPU가 명령어를 한 번에 하나씩 순차적으로 처리하며, 이 때문에 병목현상이 발생한다. 현대에 이르러서는 '하버드 구조'라는 것을 내부적으로 적용함으로써 속도를 많이 향상 시켰으나 여전히 남아있는 문제다.
폰 노이만 구조의 구체적인 설계 구조는 다음과 같다.
대표적인 운영체제
- Unix: 운영체제 기술 발전사에서 현대 운영체제를 가장 최조로 구현 (1970년대). Unix 계열 OS (Unix와 사용법이나 OS구조가 유사한 운영체제)들로는 Linux, Mac등이 있다.
- Linux: 인터넷 서비스를 구동시키는 서버 환경에서 많이 사용한다.
- Windows OS: Microsoft사의 DOS에서 탄생한 운영체제
- Mac OS: Unix로부터 출발한 애플사의 운영체제
운영체제의 역할
1. System Resource 관리
시스템 자원 = 컴퓨터 하드웨어
- 중앙처리장치: CPU
- 주기억 장치: Memory(DRAM, RAM)
- I/O Device (입출력장치) - e.g. 모니터, 마우스, 키보드, 네트워크 (여기서 네트워크는 내 컴퓨터가 다른 컴퓨터에 데이터를 전송하거나 다른 컴퓨터에서 내 컴퓨터로 정보를 입력 받음)
- 저장매체 (특징: 컴퓨터를 꺼도 저장된 정보가 보관됨): SSD(Flash memory로 만든 저장매체), HDD(하드디스크)
하드웨어는 스스로 관리 할 수 없음. 예를들어 CPU는 스스로 각 프로그램이 얼마만큼의 CPU를 사용할 지 결정할 수 없음. 응용 프로그램이 CPU 시간을 요청하면 OS가 이를 허가해주어야한다. 메모리와 저장매체 역시 특정 주소에 저장된 데이터를 읽는 기능만 수행할 뿐이지 각 프로그램이 어떤 파일 구조로 어느 주소에 저장되어야하는지, 어느 정도의 메모리 공간을 확보해줘야하는지를 결정할 수 없다. 키보드, 마우스 또한 입력을 받아서 전달만 할 뿐이지, 화면에 어떻게 보여야하고 어떤 기능을 수행해야하는지는 알지 못한다. 이 모든 것들을 수행하고 관리하는 것이 운영체제이다.
예를 들어 USB 메모리를 컴퓨터에 꽂으면 인식하여 폴더를 띄워주는 것도 운영체제에서 하는 일이다. 결국 운영체제는 하드웨어를 조작/ 제어하는 소프트웨어이고, 운영체제 없이 컴퓨터는 동작할 수 없다.
2. 사용자와 컴퓨터 하드웨어 간의 커뮤니케이션 지원
OS가 없으면 사용자가 컴퓨터에 명령어를 내릴 수 있는 수단이 없다. 운영체제는 사용자와 소통하기 위해 인터페이스를 제공하는데, 이 기능을 수행하는 것이 쉘이다. 쉘은 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램이다.
3. 응용 프로그램(Application) 관리
우리가 쓰는 응용프로그램을 실행시켜주고 효율적으로 제어되도록 관리하는 역할들을 한다. 여기서 응용프로그램이란 소프트웨어를 두 가지로 나눌 때 운영체제를 제외한 나머지이다. 스마트폰에서 사용하는 앱과 동일한 느낌으로 생각하면 된다.
응용 프로그램을 관리한다는 것은 응용 프로그램 실행, 응용 프로그램 간의 권한, 응용 프로그램의 사용자를 관리한다. 응용 프로그램은 누구나 만들 수 있기 때문에 해당 응용프로그램이 비 정상적으로 컴퓨팅 자원을 많이 사용한다면 해당 프로그램을 강제 종료 시키거나, 비 정상적인 동작을 할 경우 컴퓨터 자체가 다운되지 않도록 막으면서 해당 프로그램만 다운시킨다.
또한 사용자가 쉘이 아닌 응용프로그램을 통해 OS에 기능을 요청할 경우에도 OS는 인터페이스를 제공하는데, 이를 시스템 콜이라고 부른다. 하지만 일반적으로 시스템 콜은 사용자들이 사용하기 어렵기 때문에, 시스템 콜이라는 함수를 부르기 위해 각 프로그래밍 언어별로 사용하는 것이 함수 및 라이브러리이다.
표준적인 시스템 콜을 정의한 문서들이있는데, 예를들면 POSIX API가 있다. Unix계열의 시스템 콜들을 정의한 문서의다. 윈도우는 별도의 쉘을 사용하기 때문에 윈도우 API가 따로 있다.
위의 세 가지를 봤을 때 운영체제의 궁극적인 목표는 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고 지원함으로써 사용자가 사용하는 응용 프로그램이 적절하게 동작하는 것을 지원하는 것이다.
운영체제의 구조
CPU Protection Rings
CPU는 커널을 통해서만 실행될 수 있는 커널 모드와 커널을 통하지 않고 실행될 수 있는 사용자 모드를 제공한다. 위의 그림에서 ring 0과 ring 3에 해당하며 대부분의 운영체제들은 해당 두 mode만 사용한다. 커널 모드는 OS가 사용하고, 운영자 모드는 응용 프로그램이 사용한다고 생각하면 된다. 이렇게 모드를 구분하는 이유는 어플리케이션이 컴퓨터의 핵심 자원에 쉽게 접근하지 못하도록 권한을 분리하고, 효율적으로 핵심 자원들을 관리하기 위함이다. 여기에서 핵심 자원은 하드웨어 뿐 아니라 쓰레드, 패킷, 프로토콜 등을 포함하며 효율적 관리의 예로 CPU 스케줄링, 메모리관리, 입출력 관리, 파일 시스템 관리 등을 들 수 있다.
프로세스는 사용자모드로 실행이 되다가 특별한 요청 - 메모리 할당 등-이 필요하면 system call을 사용하여 커널에 요청을 보낸다. 해당 요청을 받은 커널은 명령을 수행 후 결과값을 system call의 return으로 돌려준다.운영체제의 종류
RealTime OS(RTOS)
프로그램 시작과 완료 시간을 보장함으로써 응용 프로그램의 실시간 성능 보장을 목표로 하는 OS이다. 시간에 민감한 프로세스를 돌려야하는 컴퓨팅 환경에 많이 사용된다. 구체적으로는 Hardware RTOS, Software RTOS로 나눠진다.
General Purpose OS (GPOS)
프로세스 실행시간에 민감하지 않고 일반적인 목적으로 사용되는 OS로 우리가 일반적으로 사용하는 Windows, Linux가 해당한다.
728x90반응형'CS기초 > OS,HW' 카테고리의 다른 글
운영체제 4: 프로세스 (Process)의 구조 (0) 2021.12.28 운영체제 3: 인터럽트 (Interrupt) (0) 2021.12.28 운영체제 2: 프로세스 스케줄링 시스템의 종류와 알고리즘 (0) 2021.12.28 [CS기초] 프롬프트의 종류, 쉘 환경변수에 대해 (0) 2021.08.20 [CS기초] 콘솔, 커널, 쉘, 터미널의 개념 쉽게 이해하기 (0) 2021.08.18