컴퓨터 사이언스 (CS)/운영체제

05. [쉽배운 1장] 운영체제의 개요

한소희DE 2021. 6. 8. 17:37
쉽배운 = 쉽게배우는 운영체제

 

 

(안녕하세요 한소희입니다. 공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. 감사합니다.)

 

 

내가 이번에 산 책이다.

왜 내가 구글링을 이용해 운영체제를 공부하다가 책을 구매했는지, 그리고 책을 선정하게 된 기준 및 계기는 무엇인지느 아래 ※ 이전 포스팅 하단에 작성해두었다.

 

※ 이전 포스팅 링크

 

04. 프로세스 문제풀이

프로세스의 생성 챕터를 이해하기 위해서는, 앞선 프로세스의 이해 포스팅을 읽는 것이 매우 중요하다! 따라서 만약 앞선 포스팅을 읽어보지 못했다면, 아래 링크를 참고해보면 좋을 것이다. ⬇

eng-sohee.tistory.com

 

 

그럼 오늘은 제 1장, 운영체제의 개요에 대해 공부하고 정리해보는 시간을 가져보도록 하겠다.

 

목차

운영체제 소개

운영체제의 역사

운영체제의 구조

 

 


 

01. 운영체제 소개

 

1-1. 운영체제란?

 

운영체제란, 사용자에게 편리한 인터페이스 환경을 제공하고
컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어다.

 

예를 들어, 레스토랑에서 손님이 원하는 음식을 주문하면 요리사가 요리를 해서 전달하는데, 이 요리사가 운영체제다.

 

 

1-2. 운영체제의 기능

운영체제 기능 목표 설명
자원관리 효율성 다양한 응용 프로그램에 컴퓨터 자원을 할당해 원활한 작업환경을 구축
자원보호 안정성 사용자가 PC에 직접적으로 접근하는 것을 차단해 변경.충돌 등 이슈 방지
하드웨어 인터페이스 제공 확장성 다양한 하드웨어를 종류 상관없이 일관된 방법으로 사용될 수 있도록 지원
사용자 인터페이스 제공 편리성 사용자가 클릭이나 터치 등 쉽게 명령해도 그것을 처리할 수 있도록 지원

 

🔥 인터페이스란?

서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점을 말한다.
즉, 운영체제는 하드웨어와 PC, 그리고 사용자와 PC를 연결해 정보 신호를 주고받아주는 접점이 된다.

자동차로 치면, 자동차의 핸들과 계기판과 같다.
실제 자동차는 엔진으로 움직이지만 사용자가 핸들로 주행명령을 했을 때 엔진이 가동된다. 이를 계기판으로 핸들 작동에 대한 출력 결과를 볼 수 있다.

 

 

1-3. 운영체제의 필요성

 

운영체제가 없는 기계는 만들 당시에 구현한 기능 외에 다른 기능을 추가하거나 성능을 향상할 수 없어서 처음에 설계한 대로만 사용할 수 있다. 그러나 운영체제가 있으면 새로운 기능 추가나 성능의 변경이 가능하다.

 

 


 

02. 운영체제의 역사

 

2-1. 1940년대, 일괄처리(일괄작업) 시스템

 

천공카드 리더(OMR 처럼 특수 펜으로 표시한 마크를 읽어 데이터를 수집)로 하나의 작업을 읽어들여 시행했던 방법이다.

일괄처리 시스템이었기 때문에, 오류가 발생하면 다시 카드리더에서 수정된 부분 마킹해 재실행해야 했다.

 

 

 

2-2. 1960년대 초반, 대화형 시스템

 

키보드와 모니터의 개발로, 프로그램이 진행되는 도중에 사용자로부터 입력을 받아 작업의 흐름을 바꾸기도 했고, 중간 결과값을 받아 잘 되고 있는지 모니터링이 가능해졌다. 데이터의 수정과 삽입이 가능해졌으므로, 이를 대화형 시스템이라 한다.

 

단, 이는 일괄처리 때와는 달리 언제 작업시간이 종료되는지 알기가 어려웠다. 

 

 

 

2-3. 1960년대 후반, 시분할 시스템

 

다중 프로그래밍 기술 & 다중사용자 기술(시스템)이 개발됐다. 그래서 시간을 분할한다는 의미로 시분할 시스템으로 불린다.

 

다중 프로그래밍이란, 하나의 CPU로 여러 작업을 동시에 수행하는 것이다.

 

 

다중사용자 시스템이란, 여러 사람이 동시에 작업할 수 있는 것이다.

 

즉, 한개의 PC로 여러 개 프로그램을 돌리거나, 여러 사람이 한 개의 PC에 접근이 가능했다는 의미다.

 

이는, 획기적이었지만 여러 작업을 동시에 처리하려면 추가 작업도 필요하고 중요한 작업이 일정시간안에 끝나는 것을 보장하지 못한다는 단점이 있었다.

 

 

 

2-4. 1970년대, 분산 시스템

 

분산 시스템이란, 값이 싸고 크기가 작은 (네트워크 상에 연결 돼 있는) 여러 컴퓨터들을 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 뜻한다. 이는 모든 컴퓨터의 지위가 동등하다.

 

 

2-5. 1990년대~현재, 클라이언트/서버 시스템

 

시스템에 접근해 작업을 요청하는 여러 대의 클라이언트와, 그것을 수행하는 서버의 연결 구조를 뜻한다.

이는 수십만명 클라이언트가 붙으면 서버가 과부하될 수 있다. 그래서 네트워크를 많이 확보해두어야 한다.

 

 

2-6. 2000년대 초반~현재, P2P 시스템

서버를 거치지 않고 사용자와 사용자를 직접 연결하는 시스템을 뜻한다. 이는 서버의 부하를 낮춘다는 장점이 있다. 메신저가 대표적 예다.

 

🤷‍♂️ 대규모 파일의 경우에는, 같은 파일을 가진 여러 사람으로부터 데이터를 나눠서 하나의 온전한 데이터를 만들어 받는다. 중간에 한 사람이 전달 중단이 돼도 다른 사람한테 받으면 되니까 문제가 없다.

 

이는 서버가 아예 없는 완전 P2P 시스템과, 서버는 있는 P2P 시스템으로 나뉜다. 

완전 P2P 시스템의 대표적 예는 블록체인이 있겠다.

 

 

 

2-7. 기타 컴퓨팅 환경 - 그리드 컴퓨팅

분산 시스템의 한 분야며, 필요한 컴퓨팅 자원을 구매해 사용하는 환경을 말한다.

 

SaaS란 무엇인가?
사용자가 필요할 때 소프트웨어 기능 이용하고 그만큼 비용 지불. 인터넷에 접속만 해서 소프트웨어를 사용

 

 

2-7. 기타 컴퓨팅 환경 - 클라우드 컴퓨팅

데이터 보관 별도 장비, 서버 구축 필요없이 필요한 인프라나 장비에 대해 옵션을 선택하고 사용료만 부과하면 되는 환경. 인터넷 접속만 하면 인프라 사용이 가능하다.

 

 

2-8. 사물인터넷

사물에 센서와 통신 기능 내장해 인터넷에 연결하는 기능

 

 


 

03. 운영체제의 구조

 

 

3-1. 사용자 인터페이스에서 커널로

사용자가 클릭이나 터치를 하면, 이는 운영체제가 이해할 수 있는 시스템 호출이라는 함수로 변환되어 커널로 옮겨진다.

 

즉 시스템 호출(시스템 콜)이란, 커널이 제공하는 자원의 사용과 연관된 함수다.

 

🔥 그럼 이 시스템 콜이 왜 필요할까?

인터페이스를 통한 사용자의 직접 접근을 막기 위해서다. 직접 접근이 된다면 보안이나 충돌 이슈가 발생하기 쉽다. 그리고 관리도 어렵다. 따라서 자원 관리의 효율성과 자원 보호의 안정성을 위해 시스템 호출을 사용한다.

만약 사용자가 무언가를 write를 하고 싶다면, write() 시스템 콜을 통해 커널에 보낼 수 있다.

이때, 커널에 접근하려면 반드시 시스템 콜을 사용해야 한다는 것을 유의하자.

 

 

 

 

3-1-1. 🔥🔥 커널 모드란?

 


메모리에서 항상 상주하며(컴퓨터에서 항상 실행되며) 자원을 효율적으로 관리하기위해서 CPU 스케줄링, 메모리관리, 입출력관리, 저장장치 관리, 파일시스템 관리 등의 업무를 수행하는 운영체제의 핵심 기능을 모아놓은 것.

애플리케이션의 충돌 등을 방지하고 시스템 호출을 처리하며 직접적인 하드웨어 제어를 수행한다.

 

시스템 호출은 커널모드에서만 가능한가?
그렇다. 시스템 호출 시에는 디스크 등을 활용해야 해서, 커널 모드를 이용한다.

 


3-1-2. 커널모드의 기능

 

 

핵심 기능 설명
프로세스 관리 CPU 배분하고 작업 환경 제공
메모리 관리 작업 공간 배치하고 ※ 실제 메모리보다 큰 가상공간 제공
파일 시스템 관리 데이터 저장하고 접근할 수 있는 인터페이스 제공
입출력 관리 필요한 입출력 서비스 제공
프로세스 간 통신관리 공동작업 위한 프로세스 간 통신 환경 지원

 

 

 

커널은, 기능 구현 방법에 따라 3가지로 분리된다.

명칭 특징
단일형 구조커널 커널의 핵심 기능을 구현하는 모듈이 하나로 구성된 형태

장점: 모듈 간 통신 비용이 줄어 효율적으로 운영이 가능
단점: 오류 처리 복잡하며 현대 운영체제가 크고 복잡해 이렇게 구현하기가 어려움
계층형 구조커널 비슷한 기능의 모듈을 묶어 계층을 만들고, 계층간 통신으로 운영체제 구현

특징
1. 오류가 발생해도 어디에 있는지를 알기 때문에 수정 쉬움
2. 오늘 날 커널 구조가 대부분 이렇게 구성되어있음
마이크로 구조커널 최소한으로 필요한 기본적 모듈만 제공하며, 이들이 각 독립적으로 작동하게끔, 가볍게 설계한 것

특징
1. 커널이 가벼워 CPU 용량 작은 곳에도 적용 가능하다.
- 이 커널 구조의 대표적 운영체제: 마하, 이는 모바일 운영체제인 iOS 커널로 사용됨

 

🤷‍♂️ 듀얼모드? 유저모드?

듀얼모드란, 커널에서 중요한 자원을 관리하기 때문에, 사용자가 그 중요한 자원에 접근하지 못하도록 모드를 2가지로 나누게 된 것을 말한다.

유저모드란? 어플리케이션이 실행되는 모드를 뜻한다. 하드웨어에 직접 접근이 불가능하다. 이것에 대한 더 자세한 설명은 추후 포스팅하겠다! (포스팅하면 이곳에 링크를 걸어두겠다 ㅎㅎ)

 

 

 

3-2. 하드웨어 인터페이스에서 커널로

 

우리는 이때 드라이버를 이용한다.

 

드라이버란, 하드웨어가 커널 실행 시 함께 실행될 수 있도록,
하드웨어 제작자가 만든 소프트웨어를 의미한다.

 

마우스나 키보드는 복잡하지 않은 디바이스 드라이버는 자체 내장되어 있고, 프린터 같은 건 사용자가 직접 디바이스 드라이버를 설치해주어야 한다.

 

반드시 드라이버가 필요한가?
그렇지 않다. 드라이버 없이 직접 커널로 연결이 가능한 것도 있고, 드라이버가 필요한 경우도 있다.

 

3-3. 가상머신

 

가상머신이란, 컴퓨터 안에 있는 컴퓨터를 의미한다.

 

운영체제와 비호환 응용 프로그램의 호환성 문제를 해결하는 방법이다.

 

이를 활용하면, 개발자가 하나의 코드로만 응용프로그램을 만들어도(= 운영체제 별 버전이 다른 프로그램을 만들지 않아도) 다른 여러 운영체제에서 적용이 가능해진다. 단, 물리적 PC 보다는 속도가 느리다는 단점도 있다.

 

 

이번에, 스마트카 빅데이터 프로젝트에서도 Virtual Box를 이용해 가상머신을 만들었었다.

 

 

02. 하둡(Hadoop) 활용한 스마트카 파일럿 프로젝트_VM 통합환경 구성

나는 오늘, 하둡을 활용한 스마트카 파일럿 프로젝트를 수행하기 위해 필요한 VM을 생성할 것이다. 앞서, 어떤 데이터셋을 활용해 어떤 레이어를 구축할 지 간단하게 정리한 포스팅이 있는데, 이

eng-sohee.tistory.com

 

 


 

이렇게 포스팅을 마치도록 하겠다!

역시 운영체제, 대학 전공수업을 혼자 독학하려니 어렵기 짝이 없다 ㅠㅠ ..

그래도 개발자가 갖춰야 할 역량이니까, 부지런히 공부해서 더더 노력해야겠다.

 

이제 2장 공부하러 출똥 💨