#운영체제 서비스
개발자; 프로그램 실행 환경 제공/ 프로그램 및 사용자; 서비스 제공
*프로그래머에게 편리함을 제공하는 기능
-사용자 인터페이스
: 명령 라인(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) 커널 로드 -> 실행: 시스템 실행
'Computer Science > 컴퓨터구조 | 운영체제' 카테고리의 다른 글
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 |