Game Tech Blog

1장. 운영체제와 컴퓨터 정리 본문

20 ~ 21 Theory Study/OS (Operating System)

1장. 운영체제와 컴퓨터 정리

jonghow 2020. 11. 2. 23:04
반응형

[ 운영체제란? ]

- 운영체제 : 사용자에게 편리한 인터페이스 환경을 제공, 자원을 효율적으로 관리하는 소프트웨어

ex ) 윈도우, Mac OS, 유닉스, 리눅스 ...

 

- 임베디드 운영체제 : CPU 성능이 낮고, 메모리 크기가 작은 시스템에 내장하도록 만든 운영체제

ex ) 스마트 시계, PMP ...

 

[ 운영체제의 구성 ]

 

- 인터페이스 

사용자, 응용프로그램은 직접 자원에 접근할 수 없다. 
OS에 원하는 작업을 간접적으로 요청할 수 있고, 결과를 반환받을 수 있다.

이렇게, OS에 원하는 작업을 요청하도록 지원해주는 API를 인터페이스라고 한다.

 

[ 자원이란? ]

- 컴퓨터 주변기기, 메모리등과 같이 하드웨어적으로 컴퓨터가 처리를 위해 사용해야 하는 것들을 일컫는다.

  (딱 정의하기가 어렵다.. 그냥 저렇게 이해하는게 맞는듯.. )

 

[ 운영체제의 역할 ]

 

1. 자원 관리 : 프로그램을 처리할 수 있도록 돕는다. 여러개를 처리해야한다면 순서대로 처리하고 다른프로그램을 처리한다.

 

2. 자원 보호 : 악의적인 스파이 웨어나, 멀웨어 등에서 부터 데이터나 시스템을 보호한다.

 

3. 하드웨어 인터페이스 제공 : 복잡한 과정없이 사용하는 하드웨어 인터페이스를 제공한다. 이 때문에, Plug And Play가 가능하다.

 

ex ) 요즘들어 나오는 특수키가 달린 마우스를 활용하려면 추가적인 소프트웨어를 깔아야하는데, 이를 '드라이버'라고 한다.

 

4. 사용자 인터페이스 제공 :  사용자가 운영체제를 편리하게 쓰기위해 지원한다. 

ex ) 마우스나 화면에 나타나는 GUI가 이에 속한다.

 

[ 유틸리티? ]

- 악성 스파이웨어, 멀웨어 등 바이러스 수법은 다양화된다. 그 수단을 모두 OS가 차단할 수 없다. 어렵기도하고, 그 수단을 모두 차단하는 OS는 비록 안전하겠지만, 상당히 무거워질 것이다. 이를 해결하기위해 OS를 보조하는 프로그램인 '유틸리티' 가 개발되었다. 이로써, 모든 수단에대해 OS가 처리할 필요가 없어졌고, 필요한 유틸리티를 설치하는 선택성이 추가되 사용자는 필요한 유틸리티를 설치해 사용하면된다.

 

[ 운영체제의 목표 ]

1. 효율성 

2. 안전성

3. 확장성

4. 편리성

 

[ 시스템의 변화 ]

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

한번에 한가지 일만 처리할 수 있었으며, 결과물만 라인프린터로 출력된다. 실행 중간에 데이터 입력, 수정이 불가능하다.

 

2. 시분할 시스템 - 1960년대 : 다중 프로그래밍 기술이 개발되던 시기. 

ex) A,B 프로그램이 있다고 가정하면, A 프로그램 0.2초, B프로그램 0.2초 처리 시간을 나눠 동시에 처리되는것 처럼 보여질 수 있게끔하는 시스템이다.

 

문제점] - 일정 시간안에 연산을 끝내지못하면 심각한 문제가 발생하는 시스템이 있다.  그래서 다음과 같은 시스템이

나왔다.

ex ) 미사일, 원자로 ...

 

2-1 ) 경성 실시간 시스템 : 응답시간을 정확히 지키는 시스템 

ex ) 미사일, 원자로 ...

2-2 ) 연성 실시간 시스템 : 어느정도 융퉁성이 허용되는 시스템

ex ) 음악 플레이어 ...

 

- 멀티 프로그래밍 정도(멀티 프로그래밍 수준) : 동시에 실행되는 프로그래밍의 갯수를 의미함

 

3. 분산 시스템 - 1970년대 : 크기가 작고 값싼 컴퓨터들을 묶어 대형 컴퓨터에 버금가게 만든 시스템

 

4. 클라이언트 , 서버 시스템 - 1990년대 ~ 현재 : 클라이언트가 원하는 요청을 서버에서 처리, 다시 클라이언트로 돌려준다.

ex ) 웹 시스템 ...

 

5. P2P 시스템 (Peer to Peer) - 2000 년대 초 ~ 현재 : 서버 - 사용자 간이 아닌 사용자 - 사용자 간의 데이터 전송을 의미. 서버는 단순한 결과만을 배출한다. 

ex ) 메신저, 토렌트, 소리바다? ...

 

- 서버가 존재하는 P2P : 유저 인증, 상태 정보 스캔, 데이터 보관 등을 서버가 담당한다.

ex ) 메신저

 

- 서버가 존재하지 않는 P2P : 블록체인이 대표적 예, P2P 전체에 거래장부를 분산시켜 전체 시스템의 50% 이상이 동의했을때, 거래장부의 변경이 가능하다. 이 때문에 하나의 거래장부를 악의적으로 공격하거나, 유실해도 의미가 없다.

ex ) 블록체인 기술

 

6. 기타 컴퓨팅 - 2000 년대 초 ~ 현재

 

- 그리드 컴퓨팅 : 대용량 데이터의 연산을 소규모 연산으로 나누어 여러 대의 컴퓨터로 분산, 

**그리드 딜리버리 : 누군가가 파일을 내려받을 때, 서버에서 직접 주는 것이 아닌, 최근에 다운로드한 누군가의 컴퓨터에서 정보를 빼와 전달하는 방식. 

 

- 클라우드 컴퓨팅 : 언제 어디서나 응용프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨팅 환경

 

- IOT ( 사물 인터넷 ) : 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술

 

[ 운영체제 구조 ]

 

- 커널 : 운영체제의 핵심 기능을 모아놓은 것

- 인터페이스 : 사용자가 커널의 기능을 사용해야 할때, 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할

 

***운영체제 = 커널 + 인터페이스

[ 운영체제의 구조 ]

- 시스템 호출 : 커널이 자신을 보호하기 위해 만든 인터페이스.

                    사용자나 응용프로그램은 시스템 호출 인터페이스 만을 통해 커널,드라이버를 이용할 수있다.

 

***시스템 호출 = 응용 프로그램  + 커널 인터페이스 

 

[ 시스템 호출 및 API , SDK 와의 관계도 ]

- 드라이버 : 하드웨어를 사용하도록 하는 일련의 API?

 

***드라이버 = 커널 + 하드웨어 인터페이스 

 

****디바이스 드라이버 

커널의 입출력을 제공받아, 하드웨어 프로그래머가 개발한 하드웨어 소프트웨어 모든 기기에 대한 드라이버를 커널에 적용하면 OS가 비대해지고, 해당 디바이스를 쓰지 않는 사용자에게는 쓸데없는 공간차지가 될 것. 그래서 해당 디바이스를 사용하는 사용자는 드라이버를 설치하면 되기때문에 커널은 기본적인 입출력을 제공해준다.

 

마우스나 키보드는 기본적으로 플러그앤 플레이가 가능하지만, 디폴트적인 기능만을 사용할 수 있다. 특수 키라던가, 매크로지정이라던가를 쓰려면 해당 제품의 드라이버를 설치하여 설정해야 하는 것으로 알고있다.

 

[ 커널의 구성 ]

1. 프로세스 관리

2. 메모리 관리

3. 파일 시스템 관리

4. 입출력 관리

5. 프로세스간 통신 관리

 

[ 단일형 구조 커널 ]

- 모듈화 하지 않은 초기의 커널, 마치 프로그래밍의 main() 함수에 모든 기능을 때려박은것과 같음

 

- 장점

1. 모듈이 분리되지 않았기때문에 통신효율이 좋을 것이다. 마치 함수를 타고가는 속도 만큼의 상승..

   (함수 오버헤드가 없어서 프로그램이 빨라지는것과 같은 이치..)

 

- 단점 

1. 버그처리가 힘들다..

2. 상호 의존성이 높아, 작은 결함이 시스템 전체 문제로 확산가능

   (절차형 프로그램과 비슷한 문제점인듯 하다.)

3. 호환성(이식성)이 낮다. 다른 기기를 호환하기 위해 수정작업이 필요한데, 수정하기가 어렵다.

4. 현대 구조는 크고 복잡하기때문에, 맞지않다.

 

[ 계층화 구조 커널 ]

- 단일화 구조 커널의 발전형, 비슷한 기능을 모아, 모듈화 진행, 오늘날 운영체제가 이러한 구조.

 

장점 

1. 디버그 하기 쉽다. 

 

[ 마이크로 구조 커널 ]

- 커널의 기본기능, 딱 필요한 기능을 Compact 한 기계에 넣을 수 있도록 하기위해 짜여진 커널 구조

- CPU 용량이 작은 시스템에 사용되기도 한다.

 

장점 

1. 소스가 비교적 적고 가벼워 호환(이식)하기 쉽다.

 

[ 가상머신 ] 

- 초기, 유닉스와 다른 커널을 가진 OS에 호환되지 않는 언어를 사용한다면 작동하지 않는다. 

ex ) 유닉스에 작동했던 c언어 코드를 Windows 에 적용하기 위해선 호환되는 다른 언어로 만들어야한다.

 

- 가상머신을 설치 시, 이러한 문제점이 해결되고, 모든 OS에서 호환될 수 있다.

ex ) JVM ...

 

[ 서로 다른 운영체제에 가상 머신을 통해 동일한 응용 프로그램을 실행할 수 있다 ]

Q1. 운영체제가 없는 기계가 있나, 작동하나? 

-> 최초의 컴퓨터인 에니악은 운영체제가 없고, 엄청 큰 건물이었다고 한다. 탄도 계산을 위해 만들어졌다고 함.

    잘 작동했음.

 

Q2. 운영체제의 사용과 미사용의 차이점은 무엇인가? 

-> 운영체제 미사용 기계에 한해, 처음 만들 당시 구현한 기능외에 다른 기능을 추가할 수 없다. 

-> 운영체제를 사용하면, 쉽게 기능 추가가 가능하다.

 

Q3. 함수 오버헤드의 속도는 많이 차이나는가?

-> 함수 호출의 비용은 완전 무료거나, 무료에 가깝거나, 그럴 수 있다고 한다. 설명들에 inline 화를 할 시, 함수 호출의 비용이 없다라고 이야기하는 것 같은데, inline 화를 시행하면 컴파일러 내부작성 코드처럼 확장된다고 한다. 

당연히 컴파일러 내부의 함수로 확장되면 속도는 빨라질 것이고, 호출이 대한 비용은 거의 0에 가깝지 않나라고 생각이된다..

(단, 파이썬의 경우 inline 화가 없다고 한다. 그래서 재귀비용이 비싸다고 한다. BOF에서 파이썬을 이용할때 Death 가 50 이상으로 가면 시간초과가 뜬다고할 정도이니, 틀린말은 아닌것 겉다. )

 

[ Q3 정보 출처 ]

 

1. 함수 호출의 성능

qastack.kr/software/318055/how-much-do-function-calls-impact-performance

 

함수 호출은 성능에 얼마나 영향을 줍니까?

 

qastack.kr

 

2. 인라인 함수

boycoding.tistory.com/220 

 

C++ 08.06 - 인라인 함수 (inline function)

인라인 함수 (inline function) 함수를 사용하면 다음과 같은 많은 이점을 얻을 수 있다. 함수 내부의 코드를 재사용할 수 있다. 인스턴트 코드보다 함수에서 코드를 변경하거나 업데이트하기가 더

boycoding.tistory.com

 

[ 궁금증 정리 ] 

1. 컴퓨터는 운영체제가 없어도 된다. 다만, 기능추가가 어려울 뿐이다

2. 운영체제는 성능 향상에 도움이 되며, 이뿐아니라, 자원관리, 인터페이스 제공등을 한다.

3. 응용프로그램과 사용자 접근을 원천 차단함으로서, 자원을 관리(보호) 한다.

4. 사용자 인터페이스 , 하드웨어 인터페이스를 제공함으로서 자원에 접근할 수 있다.

5. 파이썬은 inline 이 없어 오버헤드 비용이 비교적 비싸다.

 

***[ 도서 출처 ]

조성호, 쉽게 배우는 운영체제, 한빛아카데미,2018

반응형
Comments