2023. 3. 15. 11:46ㆍzerobase/CS
운영체제
● OS(Operating System)
● 주요 운영체제: 윈도우, UNIX 계열 OS(리눅스), MacOS
● OS는 더 정확히는 커널(kernal)을 의미함
○ 일반적으로는 커널에 여러가지가 추가된 상태를, OS라고 통칭함
커널과 쉘 이해
● 쉘(Shell)
○ 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램
○ 쉘은 터미널 환경(CLI)과, GUI 환경 두 종류로 분류
○ 유명한 쉘: 리눅스 bash
● 시스템 콜(System Call)
○ 시스템 콜 또는 시스템 호출 인터페이스
○ 운영체제가 운영체제 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수를 제공
● API(Application Programming Interface)
○ 모호한 용어이지만, 간단히 함수 또는 라이브러리라고 이해하면 됨
○ API 내부에는 필요시 해당 운영체제의 시스템콜을 호출하는 형태로 만들어짐
○ 함수든 변수든 결국 주소가 있고, 해당 주소에서 코드를 실행하는 형태
● 운영체제를 만든다면?
1. 운영체제를 개발한다. (kernel)
2. 시스템콜을 개발
3. 시스템콜 기반, 프로그래밍 언어별 라이브러리 개발(API)
4. 지원되는 프로그래밍 언어로 Shell 프로그램 개발
5. 지원되는 프로그래밍 언어로 응용 프로그램 개발
커널 모드와 사용자 모드 이해
● 사용자 모드와 커널 모드
○ 함부로 응용 프로그램이 전체 컴퓨터 시스템을 헤치지 못함
○ 주민등록등본은 꼭 동사무소 또는 민원24시(정부 사이트)에서 특별한 신청서를 써야만, 발급
○ 동사무소 직원분들은 특별한 권한을 가지고, 주민등록등본 출력 명령을 실행
● CPU Protection Ring
○ 사용자 모드 (user mode): 응용 프로그램이 사용
○ 커널 모드 (kernel mode): OS가 사용
● 시스템콜은 커널 모드로 실행
○ 커널 모드에서만 실행 가능한 기능들이 있음
○ 커널 모드로 실행하려면, 반드시 시스템 콜을 사용해야 함(거쳐야 함)
○ 시스템 콜은 운영체제 제공
● 현업, IT 기술과 컴퓨터공학의 이해
○ App Store 에서 다운받은 앱이 휴대폰 데이터를 삭제하는 코드가 들어 있다면?
- 앱이 동작하기 위해 필요한 권한을 사용자에게 입력받는 이유
● 정리
○ 운영체제는 시스템 콜 제공
○ 프로그래밍 언어별 운영체제 지원을 위해, 운영체제 별 API 제공
○ 응용 프로그램 개발시 운영체제 기능이 필요한 경우, 해당 API를 사용해서 프로그램 작성
○ 응용 프로그램 실행시, 해당 API를 호출하면, 시스템 콜 호출, 커널 모드로 변경 후, OS 내부에서 해 당 명령이 실행되고, 응용 프로그램에 결과 리턴
운영체제 역할 정리
● 운영체제 역할1: 시스템 자원(System Resource) 관리자
○ 시스템 자원(System Resource) = 컴퓨터 하드웨어
- CPU (중앙처리장치), Memory (DRAM, RAM)
- I/O Devices (입출력장치) : Monitor, Mouse, Keyboard, Network
- 저장매체: SSD, HDD (하드디스크)
○ CPU: 각 프로그램이 얼마나 CPU를 사용할지를 결정할 수는 없습니다.
○ Memory: 각 프로그램이 어느 주소에 저장되어야 하는지, 어느 정도의 메모리 공간을 확보해줘야 하는지를 결정할 수는 없습니다.
○ 저장매체(HDD, SSD): 어떻게, 어디에 저장할지는 결정할 수 없습니다.
○ 키보드/마우스: 스스로 표시할 수는 없음
● 운영체제 역할2: 사용와 컴퓨터간의 커뮤니케이션 지원
● 운영체제 역할3: 응용 프로그램 제어
● 정리
○ 운영체제 역할1: 시스템 자원(System Resource) 관리자
○ 운영체제 역할2: 사용와 컴퓨터간의 커뮤니케이션 지원
○ 운영체제 역할3: 응용 프로그램 제어
● 응용 프로그램이란?
○ 프로그램 = 소프트웨어
○ 소프트웨어 = 운영체제, 응용 프로그램(엑셀, 파워포인트, 여러분들이 맏는 프로그램)
○ 응용 프로그램 = Application (일반 PC에서의 프로그램) = App (스마트폰에서 응용 프로그램)
● 운영체제와 응용 프로그램간의 관계
○ 운영체제는 응용 프로그램을 관리
- 응용 프로그램을 실행시킨다.
- 응용 프로그램간의 권한을 관리해준다.(관리자 권한으로 실행)
- 응용 프로그램을 사용하는 사용자도 관리(로그인)
○ 응용 프로그램은 누구나 만들 수 있다.
- 응용 프로그램에 무한 반복문을 넣었다.
- 응용 프로그램을 잘 못 작성해서, 프로그램이 다운
- 모든 파일 삭제 막기 (권한/사용자 관리)
- 응용 프로그램이 욕심이 많아서, CPU를 자기만 쓰겠다 <‑‑ 운영체제가 막는다.
「1. 응용 프로그램을 관리한다.
2. 시스템 자원(System Resource)를 관리한다.
3. 사용자와 컴퓨터간의 커뮤니케이션을 지원」
1. 운영체제의 목표: 사용자가 사용하는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원
2. 운영체제는 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고, 지원하는 소프트웨어
● 정리
○ 운영체제의 역할: 시스템 자원, 응용 프로그램 관리, 효율적 분배
○ 응용 프로그램이란? ‑ 소프트웨어 (운영체제, 응용 프로그램)
프로세스 개념 이해
● 프로세스 (process) 란?
○ 실행 중인 프로그램은 프로세스라고 함
- 프로세스: 메모리에 올려져서, 실행 중인 프로그램
- 코드 이미지(바이너리): 실행 파일
○ 응용 프로그램 != 프로세스
- 응용 프로그램은 여러 프로세스로 구성 가능
● 현업, IT 기술과 컴퓨터공학의 이해
○ 엑셀 프로그램과 엑셀 프로세스
- excel.exe (코드 이미지, 바이너리) 와 엑셀 프로세스
○ 휴대폰에서 앱이 실행되어 있을 때가 앱이 프로세스로 실행될 때임
프로세스 스케쥴링
● 배치 처리 시스템
○ 여러 프로그램을 순차적으로 실행시킬 수 있도록 해주세요!
- 어떤 프로그램은 실행이 너무 시간이 많이 걸려서, 다른 프로그램이 실행하는데 시간을 많이 기다 려야 한다.
● 시분할 시스템
○ 시분할 시스템: 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템
- 여러 사용자가 동시에 하나의 컴퓨터를 쓰려면 어떻게 해야 하나요? (다중 사용자 지원)
'zerobase > CS' 카테고리의 다른 글
Cross Browsing(크로스 브라우징) (0) | 2023.03.30 |
---|---|
운영체제(3) (0) | 2023.03.15 |
운영체제(2) (1) | 2023.03.15 |
컴퓨터 구조(Computer Science)(2) (0) | 2023.03.11 |
컴퓨터 구조(Computer Science)(1) (0) | 2023.03.05 |