It is What it is
로그인
It is What it is
로그인
[운영체제] 운영체제 구조
.
·
2021년 7월 2일
팔로우
1
1
운영체제
목록 보기
2/6
목표
운영체제가 제공하는 서비스를 식별
시스템 콜을 사용하는 방법 설명
운영체제의 다양한 구조를 설명
운영체제 서비스
운영체제는 프로그램 실행 환경을 제공
사용자 인터페이스
대부분의 운영체제가 UI를 지님 주로 CLI,GUI 사용
프로그램 수행
시스템은 프로그램을 메모리에 적재해 실행 할 수 있어야 함
프로그램이 정상적이든 비정상적이든 실행을 끝낼 수 있어야 함
입출력 연산
실행 중인 프로그램은 입출력을 요구할 수 있음, 파일, 입출력 장치가 연관
파일 시스템 조작
프로그램은 파일,폴더를 읽고 쓰거나 만들고 지울 수 있음
권한 설정, 검색, 파일 정보를 열거 가능
통신
같은 호스트 내 또는 다른 호스트 내의 프로세스들이 정보를 교환 가능
공유메모리 또는 메세지 전달을 통해 이루어짐
오류 탐지
운영체제는 가능한 모든 오류를 의식해야 함
CPU,메모리,입출력장치, 사용자 프로그램에서 발생 가능
각 오류에 대해 OS는 적절한 조치를 취해야 함
자원 할당
다수의 프로세스나 작업이 동시에 실행될 때 그들 각각에 자원을 할당
여러가지 다른 종류의 자원을 관리
CPU 사이클, 메인 메모리, 파일 저장장치들은 특수한 할당 코드를 지님
입출력 장치들은 일반적인 요청과 방출 코드를 지님
기록 작성(logging)
어떤 프로그램이 어떤 종류의 컴퓨터 자원을 얼마나 많이 사용하는지 추적
보호, 보안
네트워크로 연결된 컴퓨터에 저장된 정보의 소유자는 그 정보의 사용을 통제하길 원함
보호 : 시스템 자원에 대한 모든 접근이 통제되도록 보장
보안 : 외부 입출력 장치들을 부적합한 접근 시도로부터 지키고 침입의 탐지를 위해 모든 접속을 기록
각 사용자가 자원에 대한 접근을 원할 때 통상 패스워를 사용해서 시스템에게 자신을 인증
사용자와 운영체제 인터페이스
대부분의 OS가 CLI와 GUI를 동시에 지님
명령 인터프리터
CLI : Command Line Intepreter
명령인터프리터를 제공하는 서비스에서 해석기를 셸이라 부름
사용자가 지정한 명령을 가져와서 그것을 수행
명령어들은 두가지 방식으로 구현
명령 인터프리터 자체가 명령을 실행항 코드를 지님
시스템 프로그램에 의해 대부분의 명령을 구현
Ex) rm file.txt
rm이라는 파일을 찾아서 그 파일을 메모리에 적재하고 그것을 매개변수 file.txt로 수행
그래픽 기반 사용자 인터페이스
GUI : Graphic User Interface
사용자에게 친화적인 인터페이스
마우스, 키보드, 모니터, 아이콘등을 사용
시스템 콜
시스템 콜 : OS에 의해 제공되는 서비스에 대한 인터페이스 제공
주로 C와 C++ 언어로 작성 됨
대부분의 응용 개발자들은 직접 시스템 콜을 사용하기보다 API에 따라 프로그램을 설계
API
가장 많이 사용되는 API : Win32 API, POSIX API, JAVA API
API 사용 이유 : 프로그램 호환성, 실행이 쉬움
시스템 콜 인터페이스
실행시간 환경(RTE)는 시스템 콜 인터페이스를 제공
시스템 콜 인터페이스는 API 함수의 호출을 가로채어 필요한 운영체제 시스템 콜을 호출
각 시스템 콜에는 번호가 할당되고 이 번호에 따라 색인되는 테이블이 유지
시스템 콜 인터페이스는 의도하는 시스템 콜을 부르고 시스템 콜의 상태와 반환값을 돌려줌
호출자는 시스템 콜이 어떻게 구현되고 실행 중 무슨 작업을 하는지 모름
API를 준수하고 시스템 콜의 결과로서 운영체제가 무엇을 할 것인지만 이해
운영체제 인터페이스의 자세한 부분은 API에 의해 프로그래머에게 숨겨짐
시스템 콜의 매개변수 전달
3가지 방법이 존재 : 레지스터, 블록, 스택
매개변수를 레지스터 내에 전달
메모리 내의 블록이나 테이블에 저장된 후 주소를 전달
매개 변수는 프로그램에 의해 스택에 넣어질 수 있고 운영체제에 의해 꺼내짐
블록, 스택 방법은 전달되는 매개변수들의 개수나 길이를 제한 X
시스템 콜의 유형
프로세스 제어
파일 조작
장치 관리
정보 유지
통신
보호
시스템 서비스
하드웨어 -> 운영체제 -> 시스템 서비스 -> 응용 프로그램
시스템 서비스는 프로그램 개발과 실행을 위한 환경을 제공
다음과 같은 범주로 구분이 가능
파일 관리
파일과 디렉토리를 생성, 삭제, 복사, 개명, 인쇄, 열거, 조작
상태 정보
단순히 시스템에 날짜, 시간, 사용 가능한 메모리, 디스크 공간, 사용자 수 같은 정보를 물음
복잡한 프로그램은 상세한 성능, 로깅, 디버깅 정보 제공
정보를 단말기나 다른 출력 장치 혹은 파일로 포맷하여 인쇄
몇몇 시스템은 환경 설정 정보를 저장하고 검색할 수 있는 등록 기능 제공
파일 변경
텍스트 에디터를 통해 파일을 내용을 생성하고 변경할 수 있음
특수한 명령어를 통해 파일 변경 가능
프로그래밍언어지원
컴파일러, 어셈블러, 디버거 및 해석기가 운영체제와 같이 제공되거나 별도로 다운 받을 수 있음
프로그램 적재와 수행
절대 로더, 재배치 가능 로더, 링키지 에디터, 중첩 로더 제공
통신
프로세스, 유저, 컴퓨터 시스템들 사이에 가상 접속을 이루기 위한 기법 제공
백그라운드 서비스
모든 범용 시스템은 부트할 때 특정 시스템 프로그램을 시작
링커와 로더
일반적으로 프로그램은 디스크에 이진 실행 파일로 존재
CPU에서 실행하려면 프로그램을 메모리로 가져와 프로세스 형태로 배치 해야 함
프로그램 생성 및 실행 순서
컴파일러 : 파일을 컴파일 해 물리 오브젝트 파일로 만듬
링커 : 재배치 가능 오브젝트 파일을 하나의 이진 실행 파일로 결합
로더 : 이진 실행 파일을 메모리에 적재
UNIX 시스템 예시
명령어 라인에 프로그램 이름 입력
fork() 시스템 콜을 사용해 새 프로세스 생성
exec() 시스템 콜로 로더 호출 후 exec()에 실행파일 이름 전달
로더는 새로 생성된 프로세스 주소 공간을 사용하여 지정된 프로그램을 메모리에 적재
운영체제 구조
모놀리식 구조
구조가 없음
커널의 모든 기능을 단일 주소 공간에서 실행되는 단일 정적 이진 파일에 넣음
단순하지만 구현 및 확장이 어려움
성능 면에서 이점 : 시스템 콜 인터페이스에 오버헤드가 없고 커널 안에서 통신 속도가 빠름
계층적 접근
운영체제가 여러 개의 층으로 나누어짐
최하위층은 하드웨어 최상위 층은 사용자 인터페이스
운영체제 층은 자료구조와 상위층에서 호출할 수 있는 루틴의 집합으로 구성
장점 : 구현과 디버깅의 간편함, 디자인과 실행이 간편, 각 층만 신경쓰면 됨
단점 : 각 계층의 기능을 적절히 정의 해야 함, 계층화로 인한 오버헤드
모듈
가장 최근 기술로 적재가능 커널 모듈 기법이라 불림
커널은 핵심 서비스를 제공하고 다른 서비스들은 커널이 실행되는 동안 동적으로 구현
각 핵심 모듈은 분리되어 있으나 모듈에서 임의의 다른 모듈을 호출 가능
계층 구조와 비슷하나 더 유연함
가상머신
가상머신은 단일 컴퓨터의 하드웨어를 여러가지 실행 환경으로 추상화
호스트 : 가상 머신을 실행하는 기본 하드웨어 시스템
게스트 : 호스트의 가상 복사본이 제공
가상머신관리자 : 가상 머신을 생성하고 실행
요약
운영체제는 사용자 및 프로그램에 서비스를 제공하여 프로그램 실행 환경을 제공
유저 인터페이스의 3가지 종류 : CLI, GUI, Batch(터치 스크린)
시스템 콜은 운영체제에서 제공하는 서비스에 대한 인터페이스 제공
프로그래머는 시스템 콜 서비스에 접근하기 위해 API 사용
시스템 콜은 프로세스가 OS에 요청을 만들 수 있도록 해줌
시스템콜의 매개변수 전달 방법 : 레지스터, 블록, 스택
OS 구조 : 모놀리식, 계층화, 마이크로커널, 모듈
.
지금부터 공부하고 개발한것들을 꾸준하게 기록하자.
팔로우
이전 포스트
[운영체제] 서론
다음 포스트
[운영체제] 프로세스
0개의 댓글
댓글 작성
관련 채용 정보