⚠️ 해당 포스팅은 인프런 공룡책 강의를 듣고 개인적으로 정리하는 글입니다. 정확하지 않은 정보가 있을 수 있으니 주의를 요합니다.
Section 01
Chapter 1,2 Introduction & O/S Structures
들어가기 전
Computer
- 컴퓨터는 정보를 처리하는 기계를 의미한다.
- 소프트웨어가 하고자 하는 모든 것을 하드웨어가 지원해주는 것을 컴퓨터라고 부른다. ( 계산기의 경우 계산만 할 수 있으니 컴퓨터가 아니다.)
- 컴퓨터는 4개의 컴포넌트로 나눌 수 있다. (H/W, O/S, Program, User)
- 기본적으로 컴퓨터는 CPU, 디바이스로 구성되어 있으며 bus를 통해 둘 사이를 연결한다.
Inforamtion
- 정보는 불확실한 상황을 측정해 수치적으로 표현한 것을 의미한다.
- 정보의 최소 단위는 bit(binary digit)로, 정보량을 구하는 방법은 아래의 사진과 같다.
- 정보를 처리하기 위해서는 정보의 상태 변환(0 -> 1, 1 -> 0)이 필요하다. 이를 위해 부울 대수(NOT, AND, OR 게이트)를 활용한다.
Von Neumann architecture
- 내장형 프로그램 컴퓨터 구조 (Stored-Program Computer)
- 메모리에 프로그램을 저장함을 의미한다.
- CPU가 메모리에서 명령어를 가져와 실행하는 구조로 구성되어 있으며, 명령어가 실행되면 결과는 다시 메모리로 저장시킨다.
- 폰 노이만 아키텍처를 따르지 않는 컴퓨터로는 신경망 컴퓨터, 네트워크 컴퓨터, 양자 컴퓨터 등이 있다.
Program
O/S (Operation System)
정의
일반적으로 운영체제에 대한 완전한 정의는 없으나, 보통 컴퓨터에서 항상 돌아가고 있는 프로그램을 운영체제라고 칭한다.
어떤 일을 하는가?
- 컴퓨터 시스템을 관리하고, 프로그램이 실행될 수 있는 환경을 제공한다.
- 시스템 서비스를 여러 응용 프로그램에게 제공한다.
- 프로세스, 리소스, UI등을 관리한다.
- 응용 프로그램들이 하드웨어 서비스를 받을 수 있게 운영체제가 관리한다.
- H/W - 유저 사이의 중재자 역할을 수행한다.
Bootstrap Program
- 컴퓨터를 실행하면 첫 번째로 실행되는 프로그램이다.
- 이 프로그램은 곧바로 운영체제(특히 커널)를 로딩한다.
- 운영체제는 로딩이 완료되면 응용프로그램을 알아서 로딩한다.
- 정리 : 전원을 실행 - CPU에서 부트스트랩 프로그램을 불러오고 실행 - 운영체제가 로딩되면 응용프로그램을 알아서 실행
Interrupts
- CPU가 다른 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능을 의미한다.
- H/W는 언제라도 인터럽트를 트리거할 수 있다.
- CPU에게 시그널을 보내면, 시스템 버스를 통해 시그널을 전달한다.
Storage Systems
- 용량, 속도에 따라 스토리지 시스템을 계층 구조로 나타낸다.
I/O Structure
- O/S의 상당 부분은 I/O 관리에 치중한다.
- DMA(Directed Memory Access) : I/O 작업을 CPU 대신 디바이스가 직접 실행하는 것을 의미한다. 모든 데이터 전송이 끝나면
Interrupt
를 통해 CPU에게 완료되었음을 알린다.(이미지 출처)
- 유튜브를 시청할 때 네트워크에서 CPU로 데이터를 보내도 CPU가 처리할 일이 많이 없으므로, 네트워크에서 디바이스로 곧바로 데이터를 전송하는 것이 DMA의 예시이다.
- 데이터 전송을 DMA 장치가 대신 해주는 것이므로 CPU 효율이 증가한다.
O/S Operations
- Multi-Programming
한 개 이상의 프로그램을 동시에 실행하는 것을 의미한다.
여러 프로세스가 동시에 메모리 안에 있고, 이로 인해 CPU 사용 효율이 증가한다.
- Multi-Tasking(Multi-Processing)
위의 Multi-Programming 의 논리적 확장이며, 1개의 CPU가 수행 작업을 계속해서 전환한다.
사용자의 입장에서는 동시에 실행되는 것처럼 보인다.
CPU Scheduling : 하나의 프로세스를 실행하고 난 후 다음 프로세스는 어떤 것을 실행할지 결정하는 것을 의미한다.
O/S Mode
- 운영체제는 서로 다른 두 개의 모드가 있으며, 유저 모드와 커널 모드로 구성되어 있다.
- 해킹 혹은 초보 사용자의 실수로 잘못된 프로그램을 실행하여 시스템을 망가뜨리는 위험을 방지하기 위해 만들어졌다.
- 커널 모드에서만 직접적으로 하드웨어를 제어한다.
System Calls : OS가 응용 프로그램에게 제공하는 인터페이스로, 커널에 관련된 것을 커널 모드에서 실행하기 위해 프로그램이 OS에게 요청하는 것을 의미한다.
Virtualization
- 가상화는 하나의 H/W에 여러 O/S를 배치하는 것을 의미한다.
Computing Environments
- 다양한 컴퓨팅 환경에 운영체제가 자리하고 있다.
- 전통적 컴퓨팅 환경
- 모바일 컴퓨팅 환경 (Android, iOS)
- 클라이언트 서버 컴퓨팅 (WEB)
- Peer-to-Peer 컴퓨팅 (Torrent, Bitcoin, Block Chain)
- 클라우드 컴퓨팅 (AWS, Azure, GCP)
- Real-Time 임베디드 시스템 (원하는 작업을 특정 시간안에 수행)
User and Operating-System Interface
- 사용자는 OS에 접근할 때 세 가지 방법을 사용할 수 있다.
- CLI(Command line Interface) : 명령어 기반 접근 - Shells
- GUI(Graphical User Interface) - Windows, MacOS
- Touch-Screen Interface - Android UI, iPhone UI