본문 바로가기

전공 테트리스/운영체제

[운영체제] 2. OS Structures

 

운영체제는 프로그램 실행을 위한 환경 제공

 

## 파란색 배경이 운영체제가 포함하는 것들

->  하드웨어는 포함하지 않는다.

1. 운영체제 서비스

 

1) 사용자에게 편리함을 제공하는 os 서비스

 

a. 사용자 인터페이스

- 명령라인 (CLI), 그래픽 사용자 인터페이스 (GUI)

 

b. 프로그램 실행

- 프로그램을 메모리에 적재하고 실행

- 정상적 또는 비정상적 방식으로 종료 (오류 시, 표시)

 

c.  i/o 작업

- 실행 중인 프로그램은 입출력 요구 시

- 일반적 사용자는 i/o 장치를 직접 제어할 수 없음. 따라서 이를 위한 실행 수단을 제공해야 함

 

d. 파일 시스템 조작

- 파일, 디렉토리 생성, 삭제, 읽기

- 파일 검색, 파일 정보 나열, 권한 관리

 

e. 통신

- 동일한 컴퓨터 내의 프로세스 간 - 공유 메모리, 메시지 전달

- 네트워크로 연결된 컴퓨터 내의 프로세스 간

 

f. 오류 감지

- cpu, 메모리, 하드웨어, i/o 장치 및 사용자 프로그램에서 발생 가능

- 각 유형의 오류에 대해 os는 정확하고 일관성 있는 컴퓨팅을 보장해야 함

 

 

 

2) 시스템 자체의 효율을 위한 기능

 

a. 자원 할당

-  병행 실행되는 여러 사용자 또는 여러 작업이 있을 때 각각에게 자원을 할당

- cpu 사이클, 메인메모리,파일 저장장치

- 요청/해제 자원 : i/o 장치

 

b. 회계

- 어떤 사용자가 어떤 종류의 자원을 얼마나 많이 사용하는지 추적

 

c. 보호 및 보안

- 다중 사용자 또는 네트워크 컴퓨터 시스템에 저장된 정보의 소유자는 해당 정보의 사용을 제어할 수 있어야 함.

- 병행 프로세스는 서로 간섭하지 않아야 함.

- 보호 : 시스템 리소스에 대한 모든 접근이 통제되도록 보장

- 보안 : 외부로부터의 시스템 보안은 사용자인증(id,pw)으로부터 시작됨

- 철저한 보안으로 외부 i/o장치를 보호함

(외부의 유효하지 않은 접근 시도로부터 시스템 보호)

 

 

2. USER OS 인터페이스

 

- CLI (Command-line-Interpreter)

: 사용자로부터 직접 명령을 입력받아 실행하는 기능

(파일 조작 - 생성, 삭제, 실행, 복사, 출력 등)

- 커널에 포함됨

- 쉘 (Shell)

> 여러 종류가 있으며 모두 비슷한 기능을 가짐 (본 쉘$#, 배시쉘$#, C쉘%)    // #은 관리자 권한을 뜻함

> 사용자의 취향대로 선택하여 사용

 

두 가지 구현 방법

1) CLI 자체가 코드를 포함하여 명령 실행

2) 시스템 프로그램을 통해 실행(ex. 유닉스)

(CLI는 명령어 해석을 할 수 없음)

(해당 명령어를 실행할 코드가 있는 파일을 로드하여 실행)

(개발자는 새로운 명령어를 쉽게 추가할 수 있음)

 

 

 

3. 시스템 콜

 

1) 운영체제가 제공하는 서비스를 위한 인터페이스 제공

(i/o장치와 os사이의 인터페이스를 제공하는 건 장치드라이버)

- 보통 고급언어로 작성됨 (하드웨어에 직접 접근해야 하는 건 어셈블리어로 작성)

- 예시 : 파일을 복사하는 데 필요한 시스템콜의 호출 순서

 

 

 

 

2) 개발자들은 시스템콜을 직접 사용하지 않고 고수준 API 사용

- API : 매개변수와 반환값을 포함하여 개발자가 사용 가능한 합수의 집합을 명시한 것

 

- 가장 일반적인 API

windows 용 Win31 API

POSIX  기반 시스템 용 POSIX API

JVM 용 Java API

- 각 운영체제는 시스템콜에 대한 고유한 이름을 가짐

- 표준  API 사례 : UNIX and Linux read()

 

3) 시스템콜 인터페이스

- 운영체제가 제공하는 시스템콜과 API의 연결고리

- 각 시스템콜은 해당 함수 번호가 있고, 커널은 이를 위한 테이블 유지

- 해당 시스템콜 실행 종료 후, 종료상태 및 반환 값 반환

 

- 표준 C라이브러리 사례

: printf() 함수는 시스템 호출 인터페이스를 통해 내부적으로 write() 시스템콜을 호출

 

시스템콜 매개변수 전달

- 매개변수의 정확한 종류와 양은 OS와 시스템콜에 따라 다르다

 

매개변수를 전달하는 일반적인 3가지 방법

(1) 가장 간단한 형태 : 레지스터에 매개변수 전달 (cpu 내의 레지스터)

(2) 메모리에 실제 매개변수 저장, 그 블록의 주소를 레지스터에 저장하여 매개변수로 전달

(3) 프로그램이 스택에 push, 운영체제가 pop하는 방법

 

- 2번 방법

 

 

- 개발자 입장에서 시스템콜을 대하는 자세

개발자는 시스템콜의 구현에 대해 알 필요가 없음 - API를 준수, OS작업을 이해하기만 하면 됨

OS  인터페이스의 상세 사항은 개발자에게 숨겨짐

런타임 지원 라이브러리에 의해 관리됨

 

 

 

 

3. 시스템콜의 유형

 

1) 프로세스 제어

- 프로세스 생성, 정상 종료

- 프로세스 실행 중 문제 발생 시, 프로세스 비정상 종료 또는 중지 (메모리 덤프 또는 오류 메시지 발생)

- 적재, 실행

- 프로세스 속성 획득 및 설정 (우선순위, 최대 허용 실행시간)

- 일정시간 동안 기다리기

- 사건을 기다리기, 사건을 알림

- 메모리 할당, 메모리 반환

- 프로세스가 공유 데이터 접근을 관리하기 위한 락(lock) 설정

 

 

2) 파일 조작

- 파일 생성, 삭제

- 파일 열기, 닫기

- 읽기, 쓰기, 위치 변경

- 파일 속성 획득 및 설정

 

 

3) 장치 조작

- 장치 요청, 장치 해제

- 읽기, 쓰기, 접근 위치 재조정

- 장치 속성 획득 및 설정

- 논리적으로 부착 및 분리

 

 

4) 정보 유지

- 현재 시간 및 날짜 반환 및 설정

- 사용자 수, 운영체제 버전 정보

- 사용 가능한 메모리 공간의 양, cpu 점유 비중, 네트워크 상태 등

- 메모리 덤프 (프로그램 추적)

- 프로세스, 파일 및 장치 속성 가져오기 및 설정

 

 

5) 통신

- 통신 연결생성, 삭제

- 메시지 전달 모델

(호스트 이름, 프로세스 이름을 명시하여 메시지 송신 또는 수신)

 - 공유-메모리 모델

(메모리 영역 생성 및 접근 권한 획득)

(shared memory create-shared memory attach)

 

 

6) 보호

- 다중사용자가 존재하는 멀티태스킹 컴퓨터 시스템을 포함하여 모든 컴퓨터 시스템(서버부터 이동형 시스템까지)에서 보호에 대한 관심이 높아짐.

- get permission - set permission (자원에 대한 접근 제어를 위한 조작)

-  allow user-deny user (사용자 접근 허용 및 거부)

 

 

 

5. 시스템 프로그램

 

- 프로그램 개발 및 실행을 편리하게 할 수 있는 환경을 제공

- 시스템 유틸리티

 

- 분류

파일 관리 : create, delete, copy, rename, print, dump, list

상태 정보 : 날짜, 시간, 가용 메모리 공간, 사용자 수, 시스템 성능 등

파일 변경 : 파일 내용 생성, 수정, 찾기 및 변환 기능(문서편집기)

프로그래밍 언어 지원 : 컴파일러, 어셈블러, 디버거, 인터프리터

프로그램 적재 및 실행 : 로더, 디버깅

통신

그 외 응용프로그램 

: 일반적인 문제를 해결하거나 일반적인 작업을 수행하는 프로그램들

웹 브라우저, 데이터베이스 시스템, 게임, 통계분석 패키지 등

'전공 테트리스 > 운영체제' 카테고리의 다른 글

[운영체제] 1. Introduction  (1) 2024.10.08