운영체제의 역활과 구조

문딤·2022년 8월 2일
0
post-thumbnail

운영체제의 역활

운영체제란(OS, Operating System) ?

💨운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며,
user가 컴퓨터를 편리하고, 효과적으로 사용 할 수 있는 환경을 제공하는
여러 프로그램의 모임이다.

운영체제의 종류

윈도우(window),맥 os(Mac Os), 리눅스(Linux), 유닉스(Unix)등이 있다.

운영체제의 기능

  • 프로세서, 기억장치, 입출력 장치 , 파일 및 정보 등의 자원관리
  • 자원을 효율적으로 관리하기 위한 스케쥴링 기능
  • 사용자와 시스템 간의 편리한 인터페이스를 제공
  • 시스템의 각종 하드웨어와 네트워크를 관리 및 제어
  • 데이터를 관리하고 데이터 및 자원의 공유 기능 제공
  • 시스템의 오류를 검사 및 복구
  • 자원 보호 기능 제공
  • 입출력 보조 기능 제공

운영체제의 목적

  1. 처리능력 증대 (Throughput)
    💨 일정 시간 내에 시스템이 처리하는 일의 양
  2. 응답시간 단축 (Turn Around Time)
    💨 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
  3. 사용가능도 증대 (Availability)
    💨 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
  4. 신뢰도 향상 (Reliabilty)
    💨 시스템이 주어진 문제를 정확하게 해결하는 정도

운영체제의 구조:

하드웨어, 디바이스 드라이버, 커널, 시스템 콜 , 인터페이스, 응용프로그램

커널

커널이란?

커널은 운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분
하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역활
컴퓨터 자원들을 관리하는 역활을 한다.

커널의 가장 큰 목표는 컴퓨터의 물리적 자원과 추상화 자원을 관리하는 것이다.

추상화 자원 ex)
CPU - TASK OR PROCESS , MEMORY - PAGE OR SEGMENT,
DISK - FILE , NETWORK - SOCKET 등등

커널의 작업 수행

  • Task(Process) Management : 물리적 자원인 CPU를 추상적 자원인 Task로 제공
  • Memory Management : 물리적 자원인 메모리를 추상적 자원인 Page 또는 Segement로 제공
  • File System : 물리적 자원인 디스크를 추상적 자원인 File로 제공
  • Network Managment : 물리적 자원인 네트워크 장치를 추상적 자원인 Socket으로 제공
  • Device Driver Management : 각종 외부 장치에 대한 접근
  • Interrupt Handling : 인터럽트 핸들러
  • I/O Communication : 입출력 통신 관리

한 줄 요약

커널은 사용자가 System Call을 통해 컴퓨터 자원을 사용할 수 있게해주는 자원 관리자

인터페이스

운영체제는 크게 두 부분으로 나뉘는데, 커널에 명령을 전달하고, 실행결과를 전달하는
인터페이스와 운영체제의 핵심기능을 모아놓은 커널이다.

운영체제는 커널과 인터페이스를 분리하여, 같은 커널이어도 다른 인터페이스로 제작 가능하다.
ex) 유닉스의 쉘

인터페이스에 따라 ux의 정도가 다르므로, 운영체제를 어렵게 느끼곤 한다.

시스템 콜

커널이 자신을 보호하기 위해 만든 인터페이스이다.
커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다.

[ open()이란 시스템 콜을 호출시 ]

운영체제는 '커널모드' 와 '사용자모드'로 나뉘어 구동되는데,
파일을 읽어오거나, 쓰거나, 화면에 메시지 출력등 일련의 기능들에서 커널모드를 사용한다.
시스템 콜은 이런 커널 영역의 기능을 '사용자모드' 가 사용가능하게,
프로세스가 직접 하드웨어에 접근해서 필요한 기능을 사용할 수 있게 해준다.

시스템 콜의 유형

  1. 프로세스 제어
  2. 파일 조작
  3. 장치 조작
  4. 정보 유지보수
  5. 통신과 보호

하드웨어

컴퓨터의 모든 물리적부품,장치 등을 뜻한다.
입력,출력,연산,제어,기억등 다섯가지 기능을 구현

중앙처리장치 (CPU)

  • 컴퓨터의 두뇌, 시스템 전체를 제어하는 장치.
  • 입력장치에서 받은 데이터를 처리해 출력장치와 기억장치로 보내는 과정을 수행.
  • CPU내 여러 레지스터가 있음.

기억장치

  • 프로그램, 데이터, 연산의 중간 결과 등을 저장하는 장치이다.
  • 주기억장치와 보조기억장치로 나누어지며 흔히 RAM과 ROM도 여기서 나온다.
  • 실행중인 프로그램과 같은 프로그램에 필요한 데이터를 일시적으로 저장한다.
  • 보조기억장치는 흔히 하드디스크 등을 말하며 주기억장치에 비해 속도는 느리지만 많은 자료를 영구적으로 보관할 수 있다는 장점이 있다.

입출력 장치

입력장치와 출력장치로 나누어지는데

  • 입력장치는 컴퓨터 내부로 자료를 입력하는 장치로서 키보드, 마우스, 조이스틱 등이 있고
  • 출력장치는 프린터, 모니터, 스피커 등의 인간이 인지할 수 있는 여러 가지 형태로 변환하여 컴퓨터에서 외부로 표현하는 장치이다.

시스템버스

시스템 버스란?

하드웨어 구성 요소를 물리적으로 연결하는 선'을 의미한다.
각 구성 요소가 다른 구성 요소로 데이터를 보낼 수 있도록 통로가 되어주는데,
용도에 따라 데이터 버스, 주소 버스, 제어 버스로 나누어진다.

데이터 버스

중앙처리장치와 기타 장치 사이에서 데이터를 전달하는 통로이다. 기억장치와 입출력장치의 명령어와 데이터를 중앙처리장치로 보내거나, 중앙처리장치의 연산 결과를 기억장치와 입출력장치로 보내므로 양방향 버스이다.

주소 버스  

데이터를 정확히 실어 나르기 위해서는 기억장치 '주소'를 정해주어야 한다. 주소 버스는 중앙처리장치가 주기억장치나 입출력장치로 기억장치 주소를 전달하는 통로이기 때문에 단방향 버스이다. 주소 선의 수는 시스템의 기억장치 용량을 결정한다. 수가 많을수록 당연히 접근할 수 있는 기억 용량이 커진다. 예를 들어 주소 선의 수가 8비트이면 주소를 256개 지정할 수 있으며 16비트이면 65,536개를 지정할 수 있다.

제어 버스

제어 버스는 중앙처리장치가 기억장치나 입출력장치에 제어 신호를 전달하는 통로이다. 제어 신호에는 기억장치 읽기 및 쓰기, 버스 요청 및 승인, 인터럽트 요청 및 승인, 클락, 리셋 등이 있고 제어 버스는 읽기 동작과 쓰기 동작을 모두 수행하기 때문에 양방향 버스입니다.

디바이스 드라이버

특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램이다.

컴퓨터를 구성하는 다양한 입출력 장치마다 각각 장치드라이버가 프로그램 되어 커널에 통합되어 실행한다.

요청 프로그램이 드라이버의 명령어를 호출하면, 드라이버는 장치에 명령어를 전달.
장치가 드라이버에게 데이터를 돌려 주면, 드라이버는 원래 요청한 프로그램의 명령어로 데이터를 다시 전달.

드라이버는 하드웨어에 의존하며, 특정한 운영 체제를 따른다.

  • 문자 디바이스 드라이버: CHARACTER DEVICE DRIVER(키보드, 마우스)
  • 블록 디바이스 드라이버: BLOCK DEVICE DRIVER(디스크 드라이버)
  • 네트워크 디바이스 드라이버: NETWORK DEVICE DRIVER(이더넷, 블루투스, 와이파이)

리눅스 /proc/devices에서 확인가능
확장자 - sys 윈도우, ko 리눅스

블루 스크린의 대부분의 원인이 디바이스 드라이버? 라고 한다.

응용프로그램

운영체제와 응용프로그램의 관계

응용 프로그램을 실행시킨다.
응용 프로그램간의 권한을 관리해준다.

  • 관리자 권한으로 실행
    응용 프로그램을 사용하는 사용자도 관리
  • ex) 로그인

즉 운영체제는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원하는 것.

API와 SDK

API(Application Programming Interface)
모듈화하여, 만들어진 어떤 기능을 제어/제공하는 인터페이스 이다.

SDK(Software Development Kit)
s/w개발도구모음이라 한다.
API, IDE, 문서, 라이브러리, 코드 샘플 및 기타 유틸리티가 포함될 수 있다.
SDK는 프로그램 및 응용 프로그램 개발의 복잡성을 줄이는 강력한 기능 집합이다.

즉 API는 SDK에 포함되는 부분집합이라 할 수 있다.

참고

https://jhnyang.tistory.com/16
https://math-coding.tistory.com/80

profile
풀스택개발자가 될래요

0개의 댓글