시스템콜

응용프로그램,운영체제,컴퓨터하드웨어(시스템 리소스)관계

도서관으로 비유

- 운영체제는 도서관

- 응용프로그램은 시민

- 컴퓨터 하드웨어는

- 운영체제의 역할

+ 시민은 도서관에 원하는 (자원) 요청함

+ 도서관은 적절한 (자원) 찾아서, 시민에게 빌려줌

+ 시민이 기한이 되면, 도서관이 해당 (자원) 회수함


실제관계

- 운영체제는 응용 프로그램이 요청하는 메모리를 허가하고, 분배한다.

- 운영체제는 응용 프로그램이 요청하는 CPU 시간을 제공한다.

- 운영체제는 응용 프로그래밍이 요청하는 IO Devices 사용을 허가/제어한다.


사용자,응용 프로그램, 운영체제, 컴퓨터 하드웨어와의 관계

- 사용자 <-> 응용프로그램, <-> API <-> 시스템콜 <-> 운영체제 <-> 하드웨어

+ ,API 프로그래머가 사용(프로그래밍언어는 API 사용법)

+ 뒷부분(시스템콜 <-> 운영체제 <-> 하드웨어)도 잘알아야한다.


운영체제는 사용자 인터페이스 제공

- (Shell)

+ 사용자가 운영체제 기능과 서비스를 조작할 있도록 인터페이스를 제공하는 프로그램

+ 쉘은 터미널 환경(CLI), GUI 환경 종류로 분류한다.


운영체제는 응용 프로그램을 위해서도 인터페이스를 제공한다.

- API (Application Programming Interface)

+ 함수로 제공

+ open() <-C언어 파일오픈

+ 시민이 도서관에서 책을 빌리려면 신청서를 작성해야한다.

- 보통은 라이브러리(library) 형태로 제공한다.

+ 운영체제에 요청할 함수들을 종류별로 묶어둔것.

+ C library


시스템

- 시스템 또는 시스템 호출 인터페이스

- 운영체제가 운영체제 기능을 사용할 있도록 시스템 콜이라는 명령 또는 함수를 제공한다.

- API 내부에는 시스템콜을 호출하는 형태로 만들어지는 경우가 대부분이다.


운영체제를 만든다면?

- 운영체제를 개발한다. (Kernel)

- 시스템 콜을 개발

- C API(library) 개발

- Shell 프로그램 개발

- 응용프로그램 개발


운영체제와 시스템콜

- 시스템콜 정의

+ POSIX-API(리눅스에 기반으로 제공),윈도우 API

  명령어로 접근한다.


시스템콜 : 운영체제 기능을 호출하는 함수

API : 언어별 운영체제 기능 호출 인터페이스 함수

1950년대

- ENIAC : 번째 컴퓨터

+ 운영체제가 없었음

+ 1개의 응응프로그램을 실행시키도 바쁘다.

+ 응용프로그램이 직접 시스템 자원을 제어하며 실행.


1960년대 초반

- 프로그램 종류도 많아지고, 사용자도 슬슬 많아지기 시작했다.

+ 프로그램이 많아지면 단일 프로그램을 실행시키는 상황은 여러 프로그램을 실행시키기엔 

시간이 너무 오래 걸렸다.


- 배치 처리 시스템(batch processing system) 출현

+ 여러 응용 프로그램을 등록시켜놓으면, 순차적으로 실행하는 시스템

+ 배치 처리 시스템을 기반으로 운영체제가 출현


1960년대 후반

- 새로운 개념이 제안됨

+ 시분할 시스템(Time Sharing System)

+ 멀티 태스팅(Multi Tasking)


멀티 프로그래밍(다중 프로그래밍)

+ 최대한 CPU 많이 활용하도록 하는 시스템(시간 대비 CPU활용도를 높인다.)

프로세서가 항상 수행할 작업을 가지도록 하여 프로세스 이용률을 증진 시키는 방법이다.


- 시분할 시스템, 멀티태스킹이 아이디어로 나왔지 운영체제로 구현되지는 않았다.


- 시분할 시스템, 멀티태스킹 공통점

+ 응용 프로그램이 CPU 사용하는 시간을 잘개 쪼개서, 여러 개의 응용 프로그램을 동시에 실행하는 기법


- 시분할 시스템 

+ 다중 프로그래밍을 논리적으로 확장한 개념이다.

+ 다중 사용자를 지원하고, 컴퓨터 응답 시간을 최소화하는 시스템

ex) 리눅스에 여러 사용자가 로그인하여 사용하면 각자 컴퓨터를 사용하고있는것처럼 지원해준다.

+ 다중 사용자가 사용하려면 응답시간을 줄여야한다(최소화).

+ 배치 프로그램보다 컴퓨터 응답시간을 줄어드는 장점이 있다.


- 멀티태스킹

+ 가능한 CPU 많이 활용하도록 하는 기능(시간대비 CPU 사용율을 높이는것)

+ 단일 CPU에서, 여러 응용프로그램의 병렬 실행을 가능하게 하는 시스템

(시간을 잘게 쪼개서 응용프로그램을 바꿔가면서 실행, 여러응용프로그램이 동시 실행되는것처럼 보임)


- 시분할 시스템,멀티태스킹은 유사한 기술이다.


- 시분할 시스템,멀티태스킹은 스케줄러를 사용한다.


- 배치 처리 시스템의 단점

+ 컴퓨터 응답 시간이 오래 걸릴 있다.(앞단에 실행시간이 많이 필요로 하는 응용 프로그램이 실행될 경우)

+ 실행 시간도 오래걸릴 있다.(CPU 필요 없음에도 응용프로그램이 CPU 점유할 있다.


- 1960년대 후반부 정리

+ 시분할 시스템, 멀티태스킹 기술이 아이디어로 제공 (구현 X)

+ 기술 : CPU 시간을 쪼개서 사용한다.

+ 결과 : 다중 사용자 지원, 응용 프로그램 동시 실행


1970년대

- 제대로된 운영체제가 나왔다.(UNIX)

+ 미국 AT&T 사의 연구소

+ 켐톰슨, 데니스 리치 개발

+ 데니스 리치는 C언어를 개발


- 운영체제 개발에 C언어가 필요했던 이유

+ 1970년대 이전 : Assembly 언어로 소프트웨어 개발

+ CPU(명령어), Memory(주소) 물리적 주소를 직접 지정해서 활용

+ 각각 컴퓨터마다 사양이 다르기에 컴퓨터마다 다시 개발해줘야 하는 단점이 있다.

+ 프로그래밍 복잡도가 높음(활용도는 좋다)


+ 1970년대 C언어가 개발된

+ 컴파일러 : 다시 작성할 필요가 없음

+ 여러 컴퓨터에 같은 C언어를 사용 가능하다.

+ Assembly 언어에 비해 복잡도가 낮다.


- 이러한 이유로 C언어를 기반으로 운영체제를 개발했다.


- UNIX 특징

+ 현대 운영체제의 기본 기술을 모두 포함한 최초의 운영체제

+ 멀티 태스킹, 시분할 시스템, 멀티프로그래밍

+다중 사용자 지원 



운영체제 역할

Operating System

OS

1. 시스템 자원 관리자

2. 사용과 컴퓨터간의 커뮤니케이션 지원

3. 컴퓨터 하드웨어와 프로그램을 제어


1. 시스템 자원(System Resource)관리자

- 컴퓨터 하드웨어 관리 소프트웨어

모니터,네트워크,키보드,마우스,HDD,SSD,etc..

+컴퓨터 하드웨어는 스스로 있는 것이 없다.

ex) CPU,Memory 분배,할당 역할을하지만

스스로 하진 않는다.

+모든 행동은 하드웨어스스로하지 않고 운영체제가 한다.


대표적인 운영체제

- Window OS, Max OS,UNIX

- UNIX OS(현대 기초적인 OS )

+ UNIX 계열 OS 

*UNIX 사용법이나,OS 구조가 유사

+ LINUX (리눅스) OS

*프로그래머,전공자


2. 사용자과 컴퓨터간의 커뮤니케이션 지원

- 사용자와 하드웨어간의 커뮤니케이션(중재)


3. 컴퓨터 하드웨어와 프로그램을 제어

- 응용프로그램(한글, 엑셀, 카카오톡) 하드웨어 관리



운영체제와 응용 프로그램


응용 프로그램이란?

- 프로그램 = 소프트웨어

- 소프트웨어 두가지로 구분

운영체제

응용프로그램(Application)

(엑셀,파워포인트,개인개발프로그램)

특징 : 운영체제위에서 동작


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

- 운영체제는 나머지 응용 프로그램을 관리

응용 프로그램을 실행시킨다.

응용 프로그램간의 권한을 관리한다.

+ 관리자 권한으로 실행

응용 프로그램을 사용하는 사용자도 관리

+ 로그인

응용 프로그램은 누구나 만들 있다.

+ 응용 프로그램엔 문제가 있을 있고

문제를 제어하는건 운영체제가 한다.

(비정상 응용 프로그램 관리)

모든 파일 삭제 막기

+ 권한/사용자 관리

- 운영체제(컴퓨터 전반) 방해하는 행동 제어

- 운영체제 역할이란?

응용 프로그램을 관리한다.

시스템 자원을 관리한다

사용자와 컴퓨터 간의 커뮤니케이션을 지원


운영체제의 목표

- 사용자가 사용하는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원

- 운영체제는 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고

지원하는 소프트웨어


운영체제 설치장소는 어디일까?

- 저장매체(SSD,HDD) 저장(설치) 된다.


운영체제는 메모리에 올라가게된다.

- 운영체제도 소프트웨어이다.

- 폰노이만 구조(모든 프로그램은 메모리에 올라가고 CPU 던져지며 실행된다.)



+ Recent posts