운영체제

운영체제 2.

MiaCoder 2024. 4. 16. 21:53

컴퓨터 자원을 관리하는 면에서 운영체제

 

조정자 -사용자와 응용프로그램 연결, 작업환경 제공

자원 할당자 - 관리자 필요한 자원 할당, 방법 경정

응용 프로그램과 입출력장치 제어자 - 다양한 입출력장치와 응용프로그램 제어

 

운영체제의 정의

응용프로그램 실행을 제어함

자원을 할당하고 관리함

입출력제어 데이터관리 서비스 제공 소프트웨어

역할

인터페이스 제공

컴퓨터 자원을 효과적으로 활용 및 조정 관리

응용프로그램 제어

입출력 및 데이터 제어

 

운영체제 - 자원관리

메모리관리

프로세스가 직접 주소로 지정할 수 있는 유일한 메모리

어디를 누가 사용하는지 뭘 저장할건지 할당 및 회수는 어떻게 할건지 등

보조기억장치 - 메모리 공간 제약으로 보조기억장치 사용

여유공간관리 저장소 할당, 스케줄링 파일 생성 삭제

 

프로세스관리

프로세스 - 실행중인 프로그램

프로세서 메모리 파일 입출력장피 같은 자원으로 구성

 

시스템

프로세스 집합

운영체제 프로세스(시스템 코드 수행) 사용자 프로세스(사용자 코드 수행) 구분

 

프로세스관리를 위한 기능

프로세스 스레드 스케줄링

생성/제거

중지/재수행

동기화

통신

교착상태 방지

 

입출력(주변장치) 관리

장치드라이버를 통해 상호작용

임시저장, 드라이버 제공 등

 

파일(데이터)관리

입출력 장치의 위치, 저장, 검색 관리

다양한 형태로 저장 가능

디렉토리로 구성

파일 디렉토리 생성 삭제, 파일 맵핑, 비휘발성 저장장치 저장

 

시스템관리 - 시스템 보호

프로그램, 프로세스, 사용자의 접근을 제어

보안기능 제공

네트워킹

통신의 경로설정 접숩 충돌 보안등 문제를 운영체제가 관리함

명령해석기

명령을 이해하고 실행

 

1940

운영체제 없이 기계어로 직접 프로그래밍

 

1950

일괄처리 시스템

비슷한 작업을 그룹으로 묶어 일괄처리

장점 컴퓨터 자원 공유, 자원의 유휴 회피

단점 작업들의 유형이 동일해야함, 입출력이 느려 유휴상태 발생, 

해결 방법 버퍼링

입출렵 버퍼를 두어 프로세스 연산과 동시에 다른 작업물을 입출력

스풀링

속도가 빠른 디스크를 버퍼처럼 사용행 입출력장치에서 미리 읽은 것

 

1960

다중프로그래밍

여러 프로그래밍을 메모리에 나우어 적재 한 후 프로세스를 번갈아 할당하는 것

프로세스 사용 극대화

여러 프로그래망을 거의 동시에 진행

시분할 시스템

다중프로그래밍에 프로세서 스케줄링을 더함

다중 처리 시스템

여러개의 프로세스를 사용함

실시간 처리 시스템 

속도가 가장 중요할 경우

 

1970

마이크로 프로세스 등장 개인용 컴퓨터 확산

 

1990 GUI 등장(윈도우)

 

2000 이후

모바일 운영체제

가상화 기술 확산

물리적 자원을 추상화 하여 논리적인 자원 형태호 표현

서버, 데스크톱, 등을 가상화함

예를 들어 기계마다 다른 운영체제를 답제하는 것이 아닌 하나의 기계에 여러 운영체제를 탑제하여 독립된 환경으로 사용함

클라우드 컴퓨팅

laas 데이터 센터에 있는 서버, 스토리지, 네트워크 등 인프로나 자원을 가상화하여 제공

paas 통합개발환경을 웹으로 제공

saas 특정 소프트웨어를 인터넷으로 제공

 

다중프로그래밍

일괄처리 시스템의 문제인 유휴를 개선

프로세스가 유휴일 떄 둘 이상의 작업이 프로세스를 전환하여 사용

프로세스 사용률 높음

메모리관리필요, 작업 선택결정 필요, 입출력이 발생 할때만 프로그램 변환 가능

 

시분할 시스템

다중프로그래밍에 시간 또는 규정시간을 할당함

여러 사용자에게 짧은 간격으로 프로세스 번갈아 할당

 

다중프로그래밍, 시분할 시스템

메모리 관리 필요

스케줄링 필요

프로세스 사용 최대화

응답시간 최소화

 

다중처리 시스템

복수의 프로세스를 사용 ㅇ여러개의 작업을 병렬로 처리함

빠른 속도, 고신뢰, 프로세스끼리 자원 공유

 

실시간 처리 시스템

응답속도가 매우 중요한 경우 사용

 hard real time processing system

시간을 지키지 못하면 시스템에 치명적일떄

soft real processing system

실패해도 치명적이지는 않을 떄

 

분산처리 시스템

시스템마다 독립적인 운영체제 메모리로 운용하지만, 데이터를 여러 군데서 처리해 사용자끼리 공유하는 것

하나의 프로그램을 여러 프로세스에서 동시에 실행하는 것

 

운영체제의 서비스

부팅서비스- 컴퓨터프로그램을 실행할 수 있도록 컴퓨터 시동

사용자 서비스 - 프로그래밍 작업을 보다 쉽게 하도록

시스템 서비스 - 시스템의 효율적인 동작 보장

시스템 호출 - 프로그램, 운영체제간의 인터페이스 제공

 

부팅(부트스트래핑) 서비스

운영체제를 메인 메모리에 적재하는 것

부트로더

운영체제를 메인메모리에 적재하는 소규모 프로그램

 

사용자 서비스

CLI 텍스트 기반 인터페이스

GUI 그래픽 기반 인터페이스

터치스크린 인터페이스

 

링커

소스코드는 object파일로 컴파일됨 이 파일을 binary실행파일로 결합하는 것이 링커

로더

binary 실행 파일을 메모리에 적제하는데 사용함

 

실제로는 라이브러리 동적링크로 메모리를 크게 절약함

 

프로그램 실행 - 메모리 할당, 해제, 스케줄링 등 작업 처리 지원

입출력 동작 수행 지원

파일 시스템 조작 - 디스크에서 파일 저장 할당 해제 등 지원

통신 - 다른 포소세스간 정보교환 지원

오류 탐지 지원

 

시스템 서비스

시스템 서비스 - 시스템 자체 효율성 향상

자원 할당 - 자원을 할당

계정 - 자우너활용에 대한 정보 저장 추적

보호 보안 - 사용제한, 작업간 간섭 금지

 

시스템 호출

실행중인 프로그램과 운영체제 간의 인터페이스 API 

불러서 기능만 사용하는 것

사용자 수준에서 시스템과 상호작용하는 동작은 사용 불가

 

커널

메모리에 상주하는 운영체제의 부분

 

시스템 호출

프로그램에서 운영체제가 제공하는 시스템을 호출함

프로세스 제어

파일 조작

장치 유지

정보 유지

운영체제에 의해 사용가능하게 된 서비스에 대한 인터페이스 제공

일종의 OS가 제공하는 system call을 사용하기 위한 연결고리 역할

직접적인 시스템 접근이 아닌 고급언어로 작성된 API를 통해 기능만 사용함

systemcall interface는 kernel에서 의도하는 system call 을 부르고 반환값을 돌려줌

 

호출자는 system call이어떻게 구현되었는지는 알 필요가 없음

 

운영체제 구조

단일구조 운영체제

운영체제의 모든 기능을 커널과 동일한 메모리 공간에 적재 후 시스템 호출만으로 사용

커널 크기가 커짐

수정 유지보수 어려움

동일한 메모리에서 실행

 

계층구조 운영체제

비슷한 기능을 하는 요소를 그룹화하야 게층적으로 구성

프로세스 요청 수행 시 계층이동하면서 호출이 발생함.

단일 구조보다 저성능

모듈화가 잘되어있음

오류 검증 용의

설계 구현 단순

각 게층은 자신의 하위 게층만 사용가능 - 게층 정의 어려움

시스템에 접근 제한이 없어 오류나 악성코드 취약

 

마이크로 커널 운영체제

커널기능을 최소화

운영체제의 많은 기능을 사용자 영역의 서버로 구현

비번한 통신 성능 열화

문맥교환 성능 열화