CS Chapter_1 - 운영체제

장선웅·2022년 8월 2일
0
post-thumbnail

1. 운영체제란?

운영체제(Operating System)은 컴퓨터 시스템이 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 즉, 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 그 속에서 프로그램이 (=응용프로그램) 유용한 작업을 할 수 있도록 환경을 제공해준다.


2. 운영체제의 구조

2_1. 하드웨어

2_1_1) 프로세서 : 연산 수행, 모든 컴퓨터 장치의 동작 제어

(1) 프로세서의 종류 : CPU(중앙처리장치), GPU(그래픽 카드), 응용 전용 처리장치
(2) 레지스터 : 프로세서 내부에 있는 메모리, 프로세서가 사용할 데이터 저장, 컴퓨터에서 가장 빠른 메모리
(3) 레지스터의 종류

3_1) 가시 레지스터 : 사용자가 볼 수 있는 레지스터(데이터 레지스터, 주소 레지스터)
3_2) 불가시 레지스터 : 사용자가 볼 수 없는 레지스터(프로그램 카운터(=PC), 명령어 레지스터, 누산기, 메모리 주소 레지스터(=MAR),메모리 버퍼 레지스터(=MBR))

2_1_2) 메모리 : 저장/기억장치, 사용자 데이터 등을 저장

(1) 메모리의 종류

1_1) 레지스터 : 가장 용량이 작고 속도가 빠르고 값이 비쌈
1_2) 캐시 : 프로세서 내부에 있는 메모리, CPU와 메모리 속도 차이에 의한 병목 현상을 해소함, 하드웨어적으로 관리됨, 해당 데이터 블록이 캐시 안에 존재한는 것을 cache hit이라 하고, 존재하지 않는 것을 cache miss라고 한다.
1_3) 주기억장치(=메인 메모리) : 프로세서가 수행할 프로그램과 데이터를 이 곳으로 옮겨야 실행 가능함, CPU와 보조기억장치의 속도 차이에 의한 병목 현상을 해소함
1_4) 보조기억장치(=스토리지) : 가장 용량이 크고, 속도가 느리며 값이 쌈, 프로세서가 직접 접근할 수 없음, 메인 메모리 자체 용량보다 큰 용량을 가지는 프로그램은 가상 메모리를 이용한다.

  • 병목 현상 : 하나의 구성 요소로 인해 전체 시스템의 성능이 제한을 받은 현상을 의미한다.

2_1_3) 주변 장치 : 프로세서와 메모리를 제외한 하드웨어들

(1) 장치 드라이버 : 주변 장치 사용을 위한 인터페이스 제공
(2) 주변 장치 종류

2_1) 입력 장치 : 키보드, 마우스, 터치 인터페이스 등
2_2) 출력 장치 : 모니터, 프린터, 스피커 등
2_3) 저장 장치 : USB, CD 등
2_4) 기타 주변 장치 : 네트워크 모뎀 등

2_1_4) 시스템 버스 : 하드웨어들이 데이터 및 신호를 주고 받는 물리적인 통로

(1) 종류 : 데이터 버스, 주소 버스, 제어 버스
(2) 동작 : 아래의 과정을 순서대로 반복

2_1) 프로그램 카운터(=PC)에 저장된 주소를 내부 버스를 이용하여 메모리 주소 레지스터(=MAR)에 전달
2_2) 메모리 주소 레지스터(=MAR)에 저장된 주소에 해당하는 메모리 위치에서 명령어를 인출하고, 이 명령어를 메모리 버스 레지스터(=MBR)에 저장함 그리고 제어장치에서 다음 명령어를 인출할 수 있게 하기 위해 프로그램 카운터(=PC)를 1 증가시킴
2_3) 메모리 버퍼 레지스터(=MBR)에 저장된 내용은 명령어 레지스터(=IR)에 전달함


2_2. 디바이스 드라이버

2_2_1) 운영체제가 키모드, 마우스, 디스크, LAN카드 같은 디바이스 등과 상호작용할 수 있게 한 소프트웨어이다.

이를 통해 디바이스의 인식, 엑세스, 제어가 가능하다.

2_2_2) 1 이상의 장치(=디바이스)를 제어하고 잘 정의된 인터페이스를 통하여 커널의 다른 부분과 상호작용하는 자료구조와 함수의 집합으로 구성된 소프트웨어이다.

커널은 아니지만, 마치 커널의 이부분 처럼 동작하게 된다.

2_2_3) 커널과 하드웨어이 인터페이스를 담당한다.

운영체제가 각 하드웨어에 맞는 인터페이스를 개발하기는 어려우므로 하드웨어 제작자가 만든 소프트웨어를 받아서 설치하여 하드웨어를 사용할 수 있게 하는데, 이를 디바이스 드라이버라고 한다.


2_3. 커널

2_3_1) 커널 : 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 운영체제의 성능을 좌우 한다.(자동차로 비유를 하자면 엔진에 해당한다.)

2_3_2) 커널의 역할

(1) 프로세스 관리 : 프로세스에 CPU를 배분하고, 작업에 필요한 제반 환경을 제공한다.
(2) 메모리 관리 : 프로세스 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.
(3) 파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다
(4) 입출력 관리 : 필요한 입력과 출력 서비스를 제공한다
(5) 프로세스 간 통신 관리 : 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다


2_4. 시스템 콜

2_4_1) 시스템 콜 : 커널에 자신을 보호하기 위해 만든 인터페이스다.

2_4_2) 시스템 콜의 역할 : 사용자나 프로그램이 직접 컴퓨터 자원에 접근하는 것을 막는다. 그러므로 사용자나 프로그램이 컴퓨터 자원을 사용하기 위해서는 시스템 콜을 사용해야 한다. 보통은 함수의 형태롤 제공된다.

사용자나 응용 프로그램이 컴퓨터의 자원에 직접 접근할 경우 모든 과정을 직접 핸들링해야 하는데, 이때 부주의로 인해 컴퓨터 시스템 자체를 파괴할 위험이 있다. 하지만 시스템 콜을 사용한다면 요청만 하고 결과만 기다리게 되므로 컴퓨터의 시스템이 파괴되는 것을 막을 수 있다.


2_5 인터페이스

2_5_1) 인터페이스 : 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 한다.


2_6 응용프로그램

프로그램은 모두 소프트웨어라고 칭한다. 소프트웨어는 운영체제와 응용프로그램(ex.엑셀, 파워포인트)으로 나뉜다. 응용프로그램은 Application(=App)이라고 불리운다.

2_6_1) 운영체제와 응용프로그램의 관계 : 운영체제는 응용프로그램을 관리한다.

  • 응용프로그램을 실행시킨다.
  • 응용프로그램간의 권한을 관리해준다 : 관리자 권한으로 실행
  • 응용프로그램을 사용하는 사용자를 관리해준다 : 로그인

3. API와 SDK

API

API란, Application Programming Interface의 약자로, 모듈화하여 만들어진, 어떤 기능을 제어/제공하는 인터페이스를 말한다.우리가 사용하는 대부분의 애플리케이션은 API에 의존하고 있다.

SDK

SDK란 Software Development Kit의 약자로, 소프트웨어 개발 도구 모음이라고도 한다.SDK는 API, IDE, 문서, 라이브러리, 코드 샘플 및 기타 유틸리티가 포함될 수 있다. SDK는 프로그램 및 응용 프로그램 개발의 복잡성을 줄이는 강력한 기능 집합이다. 어떤 소프트웨어를 만들기 위한 도구 모음을 SDK라고 한다. 그리고 이 도구엔 API도 포함되어 있다.

API VS SDK

1. 목적 : API는 소프트웨어 연결 및 통합이라면, SDK는 다양한 개발 도구를 포함하는데에 있다.

2. 형질 : API는 가볍고 빠르며 전문화되어있고, SDK는 API보다 더 견고하며, 많은 유틸리티를 포함한다.

3. 사용사례 : API는 애플리케이션에 특정 기능을 추가하는데 사용되며, SDK는 새로운 애플리케이션을 생성하거나 하나의 패키지로 많은 기능을 추가하는데 사용된다.

예를 들자면, SDK는 키트를 얻는 것과 같다. 레고처럼 조립법과 사용설명서까지 포함된 키트를 의미한다.

API는 어떤 레고를 완성시키기 위한 조각 하나하나를 의미한다. 각 조각은 다른 레고와 합쳐질 수도 있고 이로 인해 만들수 있는 레고는 무한하다.

즉, API는 SDK의 일부가 될 수 있다는 점에서 SDK가 API보다 더 큰 개념이라고 할 수 있다.

profile
개발을 꿈꾸는 초짜

0개의 댓글