티스토리 뷰

code/OS

운영체제 소개

golee922 2020. 8. 9. 16:59

운영체제

 

 

운영체제란 무엇인가?

- 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어 + 하드웨어 연결하는 소프트웨어 계층

 

사용자 사용자

각종 소프트웨어 사용자

운영체제

컴퓨터 하드웨어

 

협의의 운영체제(커널)

- 운영체제의 핵심 부분으로 메모리에 상주하는 부분

- 좁은의미로 이야기할때는 커널만 얘기

광의의 운영체제

- 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념

- 메모리에 상주하지 x

 

 

운영체제의 목적

- 컴퓨터시스템의 자원을 효율적으로 관리

- 주어진 자원으로 최대한의 성능을 내도록 (효율성)

- 사용자간의 형평성 있는 자원 분배 (형평성)

- 자원 관리

- 사용자, 자신 보호

- 컴퓨터시스템을 편리하게 사용할 수 있도록

- 각각의 사용자가 똑같은 프로그램을 사용하고있지만 나만 사용하고 있는것처럼 느껴지도록 자원을 분배 (cpu를 번갈아 할당, 메모리를 적절히 분배)

 

 

운영체제의 분류

- 동시작업 가능 여부

- 단일 작업 single tasking (옛날거) ex. ms-dos

- 다중 작업 multi tasking (현대는 다중 작업 운영체제를 사용중) ex. UNIX, MS Windows

 

사용자의 수

- 단일 사용자 single user ex. ms-dos, ms-windows(다중사용자를 지원할 수도 있음)

- 다중 사용자 multi user ex. UNIX

 

처리 방식

- 일괄 처리 batch processing

   - 완전 옛날 시스템 (오엠알 카드같은데다 구멍을 뚤어서 기계에 넣어주면 그것을 기계가 읽고 일정 시간 소요후에 결과를 볼 수 있는 시스템)

- 시분할 time sharing (요즘)

   - 짧은 응답시간

- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용

- 실시간 realtime OS

- 정해진 시간안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간시스템을 위한 OS ex. 원자로/공장제어, 미사일 제어, 반도체 장비, 로봇 제어

- 시분할과 비슷해보이지만 다름

- 딱딱 맞춰서 해야할 때 사용

- 실시간 시스템의 개념 확장

hard realtime system (시간에 딱딱 맞추는게 정말 중요한) ex.반도체 공정

soft realtime system (엄청중요하진 않지만 그래도 시간에 맞춰야 할 때) ex.영화 시간표

 

스마트폰이 점점 진화 함에따라 원래 시분할 운영체제로도 충분했었던 운영체제가 실시간 운영체제의 필요도가 증가 (네비게이션 기능도 있어야함)

 

 

 

몇가지 용어

- multitasking

- multiprogramming : 여러 프로그램이 메모리에 올라가 있음을 강조

- time sharing : CPU를 강조한 용어

- multiprocess

컴퓨터에서 (하나의 CPU) 여러 작업을 동시에 수행하는 것을 뜻하는 단어들

 

multiprocess : 하나의 컴퓨터에 여러개의 CPU (processor)가 붙어있음을 의미

 

 

운영체제의 예

- 유닉스 UNIX

- 대형 컴터, 여러명의 사용자, 서버를 위한

- 코드의 대부분을 c언어로 작성 (유닉스 운영체제를 만들기위해 c언어가 만들어짐)

- 소스 코드 공개 되어있음

- 높은 이식성 (하나의 컴퓨터에서 돌아가는 유닉스 운영체제를 다른 컴터에서도 수월하게 이식해서 사용할 수가 있다)

- 커널의 크기가 작다

- 복잡한 시스템의 맞게 확장 용이

- 다양한 버전 linux system v 모두다 공개 되어있음 누구나 가져다가 자유롭게 사용할 수 있다.

- MS-DOS(Disk Operating System)

  - 개인용 컴터를 위한, 단일 사용자용

- 초창기 단일 프로그램을 위한 운영체제

- 메모리가 엄청 작음 (하드웨어가 이렇게 발전할지 몰랏다함)

- MS-Windows

- 개인용 컴터를 위한

- 다중작업용

- 불안정성, 그러나 많이 안정화됨

 

 

운영체제의 구조

cpu가 누구한테 cpu를 줄지 정하는 ‘cpu 스케줄링

먼저온걸 먼저처리하는 것이 효율적으로 보이지만, 컴퓨터상에서 꼭 그렇지만은 않다.

걸리는 시간이 각각 다르므로

 

한정될 메모리를 어떻게 나누어 줄지 정하는 메모리 관리

항상 똑같이 나눠주는게 아니라 효율적으로 나눠주는게 베스트

 

디스크에 파일을 어떻게 보관할지 정하는 파일 관리

cpu 스케줄링처럼 먼저온거 먼저저장이 아니라 더 효율적으로 디스크 제일 안쪽에 저장요청이 들어오면 나중에 들어온 요청일지라도 먼저 저장한다.

(엘리베이터처럼 9, 2, 11층에 간다면 2, 9, 11층에 가는게 효율적인 것처럼)

 

각기 다른 입출력장치와 컴퓨터간에 어떻게 정보를 주고 받게 할지 정하는 입출력 관리

I/O device

cpu가 일을하고있는데 중간에 키보드에 입력이 들어왔다, 하면 그 시그널을 받고 어떻게 처리할지 고민이런게 입출력 관리

 

프로세스 관리

 

그 외 - ‘보호 시스템’ ‘네트워킹

 

 

운영체제의 수강 태도

- OS 개발자 관점에서 수강하기!

- 대부분의 알고리즘은 OS 프로그램 자체의 내용

- 인간의 신체가 뇌의 통제를 받듯, 컴퓨터 하드웨어는 운영체제의 통제를 받으며 그 운영체제는 사람이 프로그래밍하는 것이다.

- 나를 운영체제라고 생각하고 내 할 일이 무엇인지 생각해보면 배울 내용이 무엇인지 알 수 있다.

 

'code > OS' 카테고리의 다른 글

프로세스 동기화(Process Synchronization)  (0) 2020.08.09
CPU 스케줄링  (0) 2020.08.09
프로세스 운영  (0) 2020.08.09
프로세스  (0) 2020.08.09
시스템 구조 & 프로그램 실행  (0) 2020.08.09