일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 네이버 치지직
- swift문법
- 치지직
- 애플 디벨로퍼 아카데미
- ObservedObject
- Swift 디자인패턴
- 앱 비교 프로젝트
- OS
- iOS 개발 오류
- 데이터베이스
- Swift 문법
- Apple Developer Academy @ POSTECH
- Swift 기능
- ObservableObject
- 데이터베이스 공부
- SWIFT
- 애플 디벨로퍼 아카데미 후기
- 네이버 부스트캠프
- 숭실대
- sqoop
- 운영체제
- 제앱소
- 소프트웨어분석및설계
- StateObject
- global soop
- useReducer
- react
- apple developer academy 후기
- 애플 아카데미 후기
- 애플 디벨로퍼 아카데미 21주차 회고
- Today
- Total
사과하는 제라스
\\\\1. OS의 개요 본문
목차
1. 운영체제란 무엇인가?
2가지!
1) HW를 손쉽게, 효율적으로 사용할 수 있는 Abstraction(추상화)를 제공함.
- 만든 프로그램은 CPU 위에서 실행이 됨.
- OS는 프로그램을 실행하기 위해 '프로세스'라는 Abstraction을 제공함.
- OS는 각 '프로세스'에 '가상 메모리'를 제공해주어 CPU 위에서 기계어로 실행되도록 도움.
- 각 프로세스에 가상 메모리 공간을 제공하여 Physical Memory를 쉽게 접근 및 사용 가능.
- 프로그램을 파일 형태로, 물리적인 형태로 저장 시 하드디스크에 파일 시스템을 통해서 File형태로 저장 가능.
- 네트워크를 사용하는 프로그램의 경우, 데이터를 패킷에 넣어서 전달하는데 이때 '포트'를 사용하여 네트워크를 통해 전달 가능.
2) 자원의 공유 및 분배를 위한 Policy를 결정함.
ex) 스마트폰에 많은 프로세스들이 동작 중임. 근데 이것들이 모두 HW를 아예 장악하도록 만들어진 건 없음.
=> 그래서 지금 당장 돌아가고 있는 어플의 GUI를 보여주는 것임.
2. Abstraction(추상화)이 왜 필요할까?
High-Level 언어 프로그램
--컴파일러->
Assembly 언어 프로그램
--어셈블러->
기계어 프로그램(0,1...)
--Interpretation->
물리적인 시그널
OS가 Application들에게 HW를 쉽게 사용할 수 있도록 해주는 Abstraction Layer을 제공해줌.
CPU가 어떤 프로세스를 실행하고 있는지 구분하지 않아도 OS의 도움으로 각각의 Application을 구분지어서 실행가능.
Memory, HW를 직접 다루는 코드를 작성하지 않아도 저장장치들을 쉽게 사용 가능.
각각의 프로세스간의 네트워크 커뮤니케이션이 필요 시 네트워크 포트, 파이프 등의 개념들을 OS가 제공해주는 Abstraction 개념들을 통해 쉽게 사용 가능.(현재 실행하는 프로세스가 메모리의 위치, HW장치 위치 이런거 몰라도 개념적인 Abstraction Layer를 통해 쉽게 사용함.)
3. Abstraction
1) Process
프로그램이란?
기계어의 집합으로 디스크와 같은 곳에 스토리지 형태로 저장되어 있음.
프로세스란?
프로그램 코드가 컴파일러, 어셈블러 거쳐서 생성된 기계어의 프로그램은 프로그램! 이게 실행이 되는 순간, 프로세스로 부른다.
이 프로세스는 OS 수준에서 만들어줘야 하는 개념임.(OS없이는 실행할 수 없다!)
OS는 프로세스 안에 Virtual Memory Space 안에 프로그램을 로딩하고 실행시켜줌.
프로세스는 왜 필요할까?
1. 프로그램을 실행시켜주기 위함.
2. 여러가지 하드웨어 컴포넌트를 필요로 하기 때문임.
모든 프로세스들이 사용하고 있는 메모리의 영역은 철저히 구분되어야 함. 그런 구분을 하기 위해 각 프로세스들에게 독립된 virtual memory space를 제공함.
2) Address Space
: 각 프로세스가 차지하는 메모리 공간. 각 프로세스들이 사용하고 있는 메모리 주소 공간은 독립되어 있어야 하므로 각 프로세스에는 Virtual Memory Address Space가 각각 할당되어 있음.(서로 침범 불가!)
-> 1. 실행 context의 보호, 2. Privacy Issue로 인함.
다양한 형태의 프로세스들을 잘, 편리하게 사용하기 위해서 OS는 Address Space를 Abstraction Layer로 각 어플리케이션, HW 디바이스들에게 제공한다.
3) File
: 프로세스에서 읽, 쓸 수 있는 Persistent Storage에 저장되는 형태의 무언가임.(물리적인 저장매체에 저장되는 물리적인 무언가!)
이건 왜 필요함?
프로세스가 데이터를 스토리지에 저장 시 -> File 형태로 안하고 물리적으로 저장할 직접적인 위치, 형태로 Disk에 직접 지정을 해야 한다면
다른 프로세스의 저장 데이터와 꼬일 수도 있고, 매우 불편함.
∴ 프로세스가 디스크에 직접 접근 안해도 OS의 도움으로 File 형태로 저장을 함.
즉,
1. 프로세스가 실행 시 직접적으로 물리적 장치를 조작하지 않아도 되는 편리함
2. 여러 개의 프로그램이 사용하고 있는 저장장치에 대한 공용 관리/유지에 대한 불편함, 발생할 수 있는 문제점 해소
4) Port
: 컴퓨터 시스템이 데이터를 주고받을 때 네트워크 포트(어떤 프로세스와 1:1로 직접 연결되어 있는 무언가.)를 사용함.
포트를 통해서만 데이터를 보낼 수 있음.
어떤 프로세스에게 데이터를 송수신할지 결정 시 프로세스의 형체를 몰라도 이 포트만 알면 데이터를 송수신 가능함.
-> 어떤 프로세스가 통신의 대상인지 구분을 해주고, Privacy Issue 측면에서 봤을 때도 중요한 정보에 대해 보내주어야 할 곳에만 보내주는 등의 역할을 함.
4. 자원의 공유 및 분배를 위한 Policy의 필요성
현재 OS가 쓰이는 영역 => PC, Server&Data Center, 스마트폰, 자동차 등등...
ex) 전기 자동차(= Computer with Wheels, 바퀴달린 컴퓨터)
- 리눅스 기반의 OS임.
각 디바이스들은 그것들의 목적에 맞게 OS가 가지는 HW자원의 공유 및 분배의 Policy가 다름.
ex)
PC, Server&Data Center -> 성능
스마트폰 -> 성능, 배터리 소모
원자력 발전소 -> 안전
IoT 시스템 -> Privacy
-> 이런 서로 다른 Policy들을 잘 튜닝해서 제공해주는 것이 OS의 중요한 역할 중 하나임.
1) 성능 위주의 예시
게임하면서 음악 듣고 있을 경우
-> SSD에 게임, HDD에 음악플레이어 어플리케이션 저장
2) 성능+에너지의 예시
게임하면서 음악 듣고 있을 경우
-> 1)처럼 하되, 사용하지 않는 다른 프로세스들은 Suspend시키거나 종료시킴으로서 에너지 아낌.
3) 안전의 예시
전기차의 경우
-> 주행과 정차에 대한 프로세스는 다른 프로세스들보다 항상 우선순위가 높을 것임.
5. OS에 대한 시각
SW는 두가지로 구분됨.
1) 시스템 소프트웨어(System SoftWare): 컴퓨팅 디바이스들을(컴퓨터 시스템을) 구동시켜주는 SW
ex) OS, 컴파일러, 어셈블러 등
2) 어플리케이션 소프트웨어(Application SoftWare): 특정 용도로 사용됨.
ex) 게임, 뮤직 플레이어, Word, Internet Explorer 등.
-> 매우 다양한 응용 프로그램들이 존재하고 이들은 반드시 시스템 소프트웨어와 함께 동작함.
6. OS의 특징
1) OS는 항상 동작하고 있다.
2) HW(컴퓨팅 디바이스)들을 통제하는 역할을 하며 관리 및 감시 활동을 함.
ex) 어떤 프로세스가 어떤 자원을 사용하고 있는지 or 어떤 프로세스에 어떤 자원을 할당해 줄 것인지
3) HW에 대한 직접적인 제어 기능을 가짐(어플리케이션들을 이런 기능을 갖지 못하므로 OS를 통해 제어할 수 있음.)
7. OS에 대한 관점
1) OS = Kernel
2) OS = Kernel + GUI + Library
- GUI(그래픽 유저 인터페이스) -> ex) IOS, Android
- Library -> 자주 사용되는 함수들의 집합 ex) libc, win32.dll
'대학 전공 공부 > 운영체제' 카테고리의 다른 글
6. CPU Scheduling (1) | 2022.11.02 |
---|---|
5. Computer Architecture (0) | 2022.10.11 |
4. Process (0) | 2022.10.09 |
3. OS의 구조2 (0) | 2022.10.07 |
2. OS의 구조(with OS의 역사 및 발전) (0) | 2022.09.19 |