728x90
반응형

#운영체제 서비스

개발자; 프로그램 실행 환경 제공/ 프로그램 및 사용자; 서비스 제공

*프로그래머에게 편리함을 제공하는 기능

-사용자 인터페이스

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

 

-프로그램 실행

: 프로그램 메모리 적재 -> 해당 프로그램 실행

-> 정상적 OR 비정상적 방식 종료(오류 시 표시)

 

-I/O 작업

: 실행 중인 프로그램 입출력 요구 -> 입출력 실행 수단 제공

 

-파일 시스템 조작

: 프로그램은 파일/디렉토리 읽기.쓰기.만들기.삭제.탐색.파일정보나열.권한관리

 

-통신

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

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

 

-오류 감지

: CPU, 메모리, 하드웨어, I/O 장치, 및 사용자 프로그램 발생가능O

각 유형의 오류에 대해 OS_정확 + 일관성O 컴퓨팅

*시스템 자체의 효율 위한 기능

-자원 할당: 병행 실행되는 여러 사용자 OR 여러 작업_자원 할당

다양한 유형의 리소스; CPU 사이클, 메인 메모리, 파일 저장장치, I/O 장치

 

-회계: 어떤 사용자 어떤 종류의 자원 얼마나 많이 사용 추적

 

-보호 및 보안

: 다중 사용자 OR 네트워크 컴퓨터 시스템에 저장된 정보의 소유자

ㄴ해당 정보의 사용 제어O

병행 프로세스 서로 간섭X

보호_시스템 리소스에 대한 모든 접근이 통제 보장O

외부로부터의 시스템 보안 -> 사용자 인증 필요O

잘못된 접근으로부터 외부 I/O 장치 보호

*사용자 인터페이스

명령 해석기(CLI)로 직접 명령 입력O

-사용자로부터 명령 입력 받아 실행

: 커널에 구현_명령 해석기 자체 명령 실행 코드O/ 시스템 프로그램으로 구현

 

-(Shell): 명령어 -> 기계어 번역 -> 커널에 전달

여러 종류 + 각기 다른 특징 (ex. Bash(, #), Bourne Shell(, #), chs(%))

 

#시스템 콜(System Calls)

: OS가 제공하는 서비스 사용할 수 있게 하는 인터페이스

고급 언어(C OR C++)로 작성

시스템 콜 직접 호출X 고수준 API(Application Programming lnterface) 사용

ㄴ각 함수의 매개변수와 반환값 포함 + 개발자가 사용 가능한 함수의 집합 명시

*가장 일반적인 API

Window Win32 API

POSIX 기반 시스템 용 POSIX API

(거의 모든 버전의 UNIX, Linux Mac OS X 포함)

JVM(Java Virtual Machine) Java API

*구현

각 시스템 콜 번호O; 시스템 콜 인터페이스는 숫자에 따라 색인 된 테이블 유지

 

-시스템 콜 인터페이스

OS 커널에서 요청된 시스템 콜 호출/ 시스템 콜의 종료 상태 및 반환 값을 반환

개발자는 시스템 콜 구현 알 필요X

API 준수 + 호출 결과 OS의 작업 내용 이해

/ OS인터페이스 상세 사항은 API에 의해 프로그래머에게 숨겨짐

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

 

시스템 콜 매개변수 전달

OS 와 시스템 콜 -> 매개변수 정보의 정확한 종류와 양

 

-OS에 매개변수 전달하는 3가지 방법

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

2) 메모리 블록 OR 테이블에 실제 매개변수 저장, 그 블록의 주소 레지스터

저장 -> 매개변수로 전달 (Linux, Solaris 채택)

3) 스택에 넣어지고 운영체제가 꺼내는 방법

ㄴ블록 및 스택 방법; 전달되는 매개변수 개수 OR 길이 제한X

 

#시스템 콜 유형

-프로세스 제어

프로세스 생성, 종료/ 프로세스 끝내기, 중지/ 적재, 실행

프로세스 속성 획득 및 설정/ 일정 시간 동안 기다리기

사건 기다리기, 사건 알림/ 메모리 할당, 반환

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

 

-파일 관리

파일 생성, 삭제/ 파일 열기, 닫기

/ 읽기, 쓰기, 위치 변경/ 파일 속성 획득 및 설정

 

-장치 관리

장치 요청, 장치 해제/ 읽기, 쓰기, 접근 위치 재조정

/ 장치 속성 획득 및 설정/ 논리적으로 부착 및 분리

 

-정보 유지 관리

현재 시간 및 날짜 획득 및 설정/ 시스템 날짜 획득 및 설정

/ 프로세스, 파일, 및 장치 속성 획득 및 설정

 

-통신

통신 연결 생성, 삭제

/ 메시지 전달 모델_호스트 이름 OR 프로세스 이름 명시

-> 메시지 송신 및 수신 (클라이언트 -> 서버)

/ 공유-메모리 모델_메모리 영역 생성 및 접근 권한 획득

/ 상태 정보 전송/ 원격 장치의 부착 및 분리

 

-보호

자원의 대한 접근 제어/ 권한 획득 및 세팅/ 사용자 접근 허용 및 거부

 

#표준 C라이브러리 사례

시스템 호출 인터페이스 제공

printf() 함수_내부적으로 wrtie() 시스템 콜 호출

 

#시스템 프로그램

프로그램 개발 및 실행 편리하게 할 수O 환경 제공

 

-시스템 유틸리티

파일변경(문서편집기)/ 상태정보/ 프로그래밍 언어 지원(컴파일러, 어셈블러,

디버거)/ 프로그램 적재 및 실행(로더)/ 통신/ 백그라운드 서비스

/ 응용 프로그램_시스템 포함X 사용자에 의해 실행O

 

#시스템 부트

시스템 전력 공급 -> 명령 레지스터 특정 메모리 위치 가리킴 + 실행

*ROM OR EEROM에 저장된 작은 크기의 코드

-부트스트랩 로더/프로그램(bootstrap loader/program)

1) 하드웨어(기계) 상태 진단

2) CPU 레지스터, RAM, 장치 제어기 등 시스템 초기화

3) 디스크에 있는 부트 블록(boot block) 로드 및 시작

4) 모든 부트 프로그램 로드 -> 파일 시스템에서 커널 탐색

5) 커널 로드 -> 실행: 시스템 실행

 
728x90
반응형

'💻 > 컴퓨터구조 | 운영체제' 카테고리의 다른 글

CH6. CPU Scheduling  (0) 2022.05.19
CH5. Process Synchronization  (0) 2022.05.19
CH4. Threads  (0) 2022.05.19
CH3. Process  (0) 2022.05.19
CH1. Overview  (0) 2022.05.19
김앩옹