diff --git a/_drafts/2024-04-01-operating-system-intro.md b/_drafts/2024-04-01-operating-system-intro.md deleted file mode 100644 index 50306c2..0000000 --- a/_drafts/2024-04-01-operating-system-intro.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: "[운영체제] 운영체제 개요" -date: 2024-04-01 12:24:00 +0900 -categories: [Computer-Science, 운영체제] -tags: ['OS'] ---- - - -## 1. 운영체제란? - -**운영체제(OS, Operating System)**란 통일된 전체(System)을 운용해 나간다(Operating)는 의미로, 하드웨어(HW, Hardware)를 소프트웨어(SW, Software)로 추상화(Abstraction)[^abstract]한 소프트웨어이다. - -### OS의 핵심 기능 - -- 프로세스 관리 -- 메모리 관리 -- 입출력 및 파일 관리 - -### 관련된 문제 - -OS는 **여러 종류의 SW를 동시에 작동하게 하는 문제**를 해결하는 과정에서 등장하였으며, OS를 개발하기 위해서는 다음과 같은 문제를 해결해야 했다. - -- 누가, 언제, 얼마나 CPU를 사용해야 하는가? - 1. 프로세스 작동 시기는 언제인가? - - 프로세스는 어떻게 교체하는가? - 2. 프로세스의 메모리 로드 관리는 어떻게 하는가? - 3. CPU와 메모리를 어떻게 연결하는가? - 4. 내려간 프로세스는 어떻게 저장하는가? - -그리고 아래와 같은 여러 가지 파생 문제가 생겨났다. -- 프로세스 동기화 -- 교착상태, 기아상태 -- 저장장치 관리 -- 분산 시스템, 가상화 시스템 - -OS의 개념은 HW를 관리하는 소프트웨어에 국한된 것이 아니며, 컴퓨터공학에서 무엇인가를 **관리**하려 할 때 광범위하게 적용될 수 있다. 예를 들어, SW가 무수한 자원을 관리할 수도 있는데, 이 때 OS의 개념이 적용될 수 있다. - -[^abstract]: 추상화(abstraction)는 컴퓨터공학의 목표 중 하나이다. - - -## 2. 운영체제 소개 - -### 운영체제란? - -1. 가장 먼저 실행되는 소프트웨어이며, -2. 저장장치의 특정 영역에 저장되어 있다. - -### 운영체제의 역할? - -1. 컴퓨터 자원을 독점하고 관리하는 소프트웨어이며, -2. 컴퓨터 자원을 추상화하여 인터페이스를 제공한다. - -### 운영체제의 목표 - -자원관리를 **'잘'** 하는 것으로, **효율성, 안정성, 확장 가능성, 편리성**을 갖추어야 한다. - -### 운영체제가 없다면? - -- 추가적인 장치연결과 SW 설치가 불가능 -- 사용 불편, 대응 어려움 - - 공학용 계산기, 펌웨어 등 - - 회로 수준에서 구워져 나온 범위 내에서 작동하는 기기들 - -그러나, 운영체제가 없다는 것이 꼭 나쁜 것만은 아니다. -- 특수 하드웨어를 조작하는 것에는 적합할 수 있음 -- 확장성이 결여되었다는 것은 보안성이 증가했다는 것과 같을 수 있음 - - 불편한 인터페이스라는 것: 비전문가의 접근에 대해 보호받는다는 것을 의미 - - -## 3. 운영체제 역사 - -### 고정 프로그램 방식(Fixed Program Computer) - -- 하나의 기계란, 하나의 기능을 의미 -- 기능 변경이란, 기계를 새로 만듦을 의미 -- 하드 와이어링 사용 -- 회로 수정의 조금의 편의를 제공해주는 수준 - -### 일괄 작업 시스템(Batch-Processing System) - -내장 프로그래밍 방식(Stored Program Computer) -- Reader: 천공 카드 / Printer: 라인 프린터 -- 전문 연산장치(CPU)와 로직 저장장치의 분리 -- 폰 노이만 구조 -- 운영체제 기능 일부(장치 관리) 제공 -- 작업을 한번에 1개만 작업 가능 - - 중간에 입력값 제어하거나, 결과 확인 불가능 - -### 대화형 시스템(Interacive System) - -- 모니터 및 키보드 등장 -- 프로그램 실행 도죽 사용자 입력 받기 가능 - - 하나의 장치에서 어떻게 여러 개 작업하는 것인가? → 다중 프로그래밍 - -### 다중 프로그래밍 - -- 하나의 CPU로 여러 작업 동시 실행 -- 동시에 실행하는 것처럼 보이게 함 -- 프로그램 실행 중 I/O 발생 → 다른 프로그램 실행 - - -## 4. 운영체제가 하는 일 - -- 프로세스 관리 -- 메모리 관리 -- 파일 시스템 관리 -- 통계 등 기타 관리 -- 네트워크 관리 (바깥 자원 관리) -- 보안 관리 - -운영체제가 하는 일은 필요시 지속적으로 확장되어 왔다. - - - -## 5. 운영체제 종류 -### P2P(Peer-to-Peer) 시스템 - -- 특정 서버의 과부화를 해결 - → 단일 장애점 (Single point of failure) -- 서버 고치지 않고, 사용자를 직접 연결함 -- 그리드 컴퓨팅, 클라우드 컴퓨팅, 사물 인터넷, 네트워크 OS, 분산 운영체제 동기화(synchronization), 협의(consensus) - -### 가상화 시스템(Virtualization) - -OS는 하드웨어에 대한 추상화: 컴퓨터도 추상화할 수 있다. -- 컴퓨터 자체를 소프트웨어로 구현한 것 -- 독립공간(sandbox) 지원 -- Hypervisor(Virtual Machine Manager), Container(Docker) - -### 모바일 운영체제 - -- 모바일 전화기나 스마트폰 등 휴대 장치에서 실행됨 -- Network, Power to performance ratio(전성비) 추구 - -### 임베디드 운엉체제 -- 임베디드 컴퓨터에서 사용됨 - -### 실시간 운영체제 - -실시간 애플리케이션 또는 태스크를 정해진 데드라인(deadline) 시간 이내에 처리되도록 보장하는 것을 목표로 한다. -- 처리시간 예측 가능하고, 보장함 (Timing guarantee) -- pSOS, VxWorks, VRTX, RT-Linux, Lynx \ No newline at end of file diff --git a/_drafts/2024-04-01-os_structure.md b/_drafts/2024-04-01-os_structure.md deleted file mode 100644 index f69fee2..0000000 --- a/_drafts/2024-04-01-os_structure.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: "[운영체제] 운영체제 구조" -date: 2024-04-01 15:37:00 +0900 -categories: [Computer-Science, 운영체제] -tags: ['OS'] ---- - - -## 1. 운영체제의 구조 - -운영체제는 크게 2(+1) 부분으로 분류되는 구조를 가진다. - -### 커널(Kernel) - -- 운영체제의 핵심 -- 좁은 의미의 OS -- OS 핵십 기능(프로세스, 메모리, 저장장치의 관리) -- 응용 소프트웨어는 하드웨어 자원 이용하려면 커널에 요청해야 함 - -### 인터페이스(Interface) - -- 커널에 명령을 전달하고, 실행 결과를 알려 줌 -- API, System Call, Shell, GUI - -### (+ Device driver) - -- 커널과 하드웨어의 연결법을 서술 -- 운영체제의 부분일 수도, 아닐 수도 있음 (정의마다 다름) - - - -## 2. 커널과 시스템 콜 -커널이 하는 일은 운영체제가 하는 일이다. 따라서 외부 노출을 방지하기 위해 User-mode, Kernel-mode가 존재한다. 모드가 스위칭될 때, CPU 차원에서 작동모드가 완전히 바뀐다. \ No newline at end of file diff --git "a/_posts/Computer-Science/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro.md" "b/_posts/Computer-Science/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro.md" new file mode 100644 index 0000000..569b0ad --- /dev/null +++ "b/_posts/Computer-Science/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro.md" @@ -0,0 +1,182 @@ +--- +title: "[운영체제] 운영체제 개요" +date: 2024-04-01 12:24:00 +0900 +categories: [Computer-Science, 운영체제] +tags: ['OS'] +--- +{% assign img_path = "/assets/img/posts/운영체제/2024-04-01-operating-system-intro" %} + + + +## 1. 운영체제란? + +**운영체제(OS, Operating System)**란 조직되어 통일된 전체(System)을 관리/운용해 나간다(Operating)는 의미로, 하드웨어(HW, Hardware)를 소프트웨어(SW, Software)로 추상화(Abstraction)[^abstract]한 소프트웨어이다. + +### 1.1. OS의 핵심 기능 + +- 프로세스 관리 +- 메모리 관리 +- 입출력 및 파일 관리 + +### 1.2. 관련된 문제 + +OS는 **여러 종류의 SW를 동시에 작동하게 하는 문제**를 해결하는 과정에서 등장하였으며, OS를 개발하기 위해서는 다음과 같은 문제를 해결해야 했다. + +- 누가, 언제, 얼마나 CPU를 사용해야 하는가? + 1. 프로세스 작동 시기는 언제인가? + - 프로세스는 어떻게 교체하는가? + 2. 프로세스의 메모리 로드 관리는 어떻게 하는가? + 3. CPU와 메모리를 어떻게 연결하는가? + 4. 내려간 프로세스는 어떻게 저장하는가? + +그리고 아래와 같은 여러 가지 파생 문제가 생겨났다. +- 프로세스 동기화 +- 교착상태, 기아상태 +- 저장장치 관리 +- 분산 시스템, 가상화 시스템 + +OS의 개념은 HW를 관리하는 소프트웨어에 국한된 것이 아니며, 컴퓨터공학에서 무엇인가를 **관리**하려 할 때 광범위하게 적용될 수 있다. 예를 들어, SW가 무수한 자원을 관리할 수도 있는데, 이 때 OS의 개념이 적용될 수 있다. + +[^abstract]: 추상화(abstraction)는 컴퓨터공학의 목표 중 하나이다. + + + +## 2. 운영체제 소개 + +### 2.1. 운영체제란? + +1. **가장 먼저 실행**되는 소프트웨어 +1. **컴퓨터 자원을 독점/관리**하는 소프트웨어 +1. 저장장치의 **특정 영역에 저장**되어 있음 +1. 컴퓨터 자원을 **추상화**하여 **인터페이스를 제공** + +### 2.2. 운영체제의 목표 + +자원관리를 **'잘'** 하기 위한 것으로, 아래의 기능을 갖춰야 한다. +- 효율성(Efficiency) +- 안정성(Robustness, Security) +- 확장 가능성(Scalability, Extensibility, Portability) +- 편리성(Usability, Interactivity) + +![운영체제 역할과 목표]({{ img_path }}/2.2. 운영체제 역할과 목표.png){: width='400'} + +### 2.3. 운영체제 기능, 하는 일 + +- **보안** / **네트워크** / **장치** / **프로세스** / **메모리** / **파일시스템** 관리 +- 그리고 **기타 관리** (사용자 계정, 통계, 오류 발견/대응 등) + +운영체제의 기능과 하는 일은 필요 시 지속적으로 확장되어 왔다. + +![운영체제 기능]({{ img_path }}/2.3. 운영체제 기능.png) + +- 초기에는 **장치 관리** 기능밖에 존재하지 않았음 +- 그러다 여러 프로그램을 동시에 돌려야 되자 **프로세스 관리** 기능이 추가되고, +- 메모리가 한정되었으므로 **메모리 관리 기능**이, +- 작업 보관의 필요성이 생겨 **파일 시스템 관리 기능**이, +- 이 모든 작업이 이상없이 돌아가는지 확인하기 위해 **통계 등 기타 관리 기능**이 생겨남 +- 그러다 네트워크가 등장하고, 장치 밖의 자원 관리 위해 **네트워크 관리 기능**이 생기고, +- 외부 사용자 신뢰성 확보 위해 **보안 관리 기능**이, +- 여러 사용자의 관리를 위해 **사용자 계정 관리** 기능 등이 생겨나게 되었음 + +### 2.4. 운영체제가 없다면? + +**작동은 가능**하다. 하지만 **한정된 기능**과 **제어가 쉽지 않다는 것** 뿐이다. +- 추가적인 장치연결 및 SW 설치가 불가능 +- 사용 불편, 대응 어려움 + - 공학용 계산기, 펌웨어 등 + - 회로 수준에서 구워져 나온 범위 내에서 작동하는 기기들 + +> 운영체제가 없다는 것이 **꼭 나쁜 것은 아닐 수도 있다!** +> - **특수 하드웨어를 조작**하는 것에는 적합할 가능성 有 +> - 확장성이 결여되었다는 것 → **보안성 증가**했다는 것일 수도... +> - 불편한 인터페이스라는 것 → **비전문가 접근에 대해 보호**받는다는 것 +{: .prompt-info} + + + +## 3. 운영체제 역사 + +### 3.1. 고정 프로그램 방식(Fixed Program Computer) + +- 하나의 기계 = **하나의 기능**을 의미 +- 기능 변경 = **기계를 새로 만듦**을 의미 +- 하드 와이어링 사용 +- 회로 수정의 조금의 편의를 제공해주는 수준 + +### 3.2. 일괄 작업 시스템(Batch-Processing System) + +**= 내장 프로그래밍 방식(Stored Program Computer)** + +- Reader: 천공 카드 / Printer: 라인 프린터였음 +- 전문 연산장치(CPU)와 로직 저장장치(RAM)의 분리 + - 폰 노이만 구조 +- 운영체제 기능 일부(**장치 관리**) 제공 +- 작업을 **한번에 1개**만 처리 가능 + - 중간에 입력값 제어하거나, 결과 확인 불가능 + +![일괄 작업 시스템]({{ img_path }}/3.2. 일괄 작업 시스템.png){: width='500'} + +### 3.3. 대화형 시스템(Interacive System) + +- 모니터/키보드 등장 +- 프로그램 실행 도중 사용자 입력 가능 + - 하나의 장치에서 어떻게 여러 개 작업하는 것인가? → 다중 프로그래밍 + +![대화형 시스템]({{ img_path }}/3.3. 대화형 시스템.png){: width='500'} + +### 3.4. 다중 프로그래밍 + +- 하나의 CPU로 여러 작업 동시 실행 + - CPU사용시간을 각 작업에 분할 할당, 동시에 실행하는 것처럼 보이게 함 +- 프로그램 실행 중 I/O 발생 → 다른 프로그램 실행 +- 오늘날 대부분의 시스템에서 채택 + +![다중 프로그래밍]({{ img_path }}/3.4. 다중 프로그래밍.png) + +### 3.5. 요약 + +|구분|시기 |주요 기술 |특징 +|----|------------|---------------------|------------------------------------------- +|0기|1940년대 |없음 |진공관 사용 +|1기|1950년대 |카드 리더, 라인프린터|일괄 작업 시스템
운영체제의 등장 +|2기|1960년대 |키보드, 모니터 |대화형 시스템 +|3기|1960년대 초반|C언어 |다중 프로그래밍 기술 개발
시분할 시스템 +|4기|1970년대 후반|PC |개인용 컴퓨터의 등장
분산 시스템 +|5기|1990년대 |웹 |클라이언트/서버 시스템 +|6기|2000년대 |스마트폰 |P2P 시스템
그리드 컴퓨팅
클라우드 컴퓨팅
사물 인터넷 + +## 4. 일괄 처리 시스템 VS 다중 프로그래밍 + +![일괄 처리 시스템 VS 다중 프로그래밍]({{ img_path }}/4. 일괄 처리 시스템 VS 다중 프로그래밍.png) + + + +## 5. 기타 시스템 +### 5.1. P2P(Peer-to-Peer) 시스템 + +- **특정 서버의 과부화**를 해결 + - 단일 장애점 (Single point of failure) +- 서버 고치지 않고, 사용자를 직접 연결함 +- **그리드 컴퓨팅**, **클라우드 컴퓨팅**, **사물 인터넷**, 네트워크 OS, 분산 운영체제 동기화(synchronization), 협의(consensus) + +### 5.2. 가상화 시스템(Virtualization) + +OS는 하드웨어에 대한 추상화: 컴퓨터도 추상화할 수 있다. +- 컴**퓨터 자체를 소프트웨어로 구현한 것** +- 독립공간(sandbox) 지원 +- Hypervisor(Virtual Machine Manager), Container(Docker) + +### 5.3. 모바일 운영체제 + +- 모바일 전화기나 스마트폰 등 휴대 장치에서 실행됨 +- Network, Power to performance ratio(**전성비**) 추구 + +### 5.4. 임베디드 운엉체제 + +- 임베디드 컴퓨터에서 사용됨 + +### 5.5. 실시간 운영체제 + +실시간 애플리케이션 또는 태스크를 **정해진 데드라인(deadline) 시간 이내에 처리되도록 보장**하는 것을 목표로 한다. +- 처리시간 예측 가능하고, 보장함 (Timing guarantee) +- pSOS, VxWorks, VRTX, RT-Linux, Lynx \ No newline at end of file diff --git "a/_posts/Computer-Science/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure.md" "b/_posts/Computer-Science/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure.md" new file mode 100644 index 0000000..08e99c9 --- /dev/null +++ "b/_posts/Computer-Science/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure.md" @@ -0,0 +1,193 @@ +--- +title: "[운영체제] 운영체제 구조" +date: 2024-04-01 15:37:00 +0900 +categories: [Computer-Science, 운영체제] +tags: ['OS'] +--- +{% assign img_path = "/assets/img/posts/운영체제/2024-04-01-os_structure" %} + + +## 1. 운영체제의 구조 + +운영체제는 크게 나누어 **2(+1) 구조**로 볼 수 있다. + +![운영체제의 구조]({{ img_path }}/1. 운영체제의 구조.png){: width="300"} + +### 1.1. 커널(Kernel) + +- **운영체제의 핵심** +- **좁은 의미**의 OS +- OS 핵심 기능(프로세스 / 메모리 / 저장장치 관리 등)의 집합 +- 응용 SW는 HW 자원 이용하기 위해 커널에 요청해야 함 + +### 1.2. 인터페이스(Interface) + +- **커널에 명령 전달**, 실행 결과 알려 줌 +- API, System Call, Shell, GUI + +### 1.3. (+ Device driver) + +- 운영체제의 한 부분일 수도, 아닐 수도 있음 (정의마다 다름) +- 커널과 하드웨어를 연결시킴 + + + +## 2. 커널과 시스템 콜 + +> **커널이 하는 일**은 곧 **운영체제가 하는 일**이다. +{: .prompt-danger } + +외부로 직접 노출이 되는 것을 방지하기 위해, **User-mode**와 **Kernel-mode**를 분리하였다. 모드가 스위칭될 때 CPU 차원에서 작동모드가 완전히 바뀐다. + +![커널과 시스템 콜]({{ img_path }}/2. 커널과 시스템 콜.png){: width='400'} + +### 2.1. System Call(syscall) + +**시스템 콜(syscall)**이란 커널이 자신의 기능을 함수 형태로 제공해주는 것이다. 커널을 보호하기 위해 아래 작업을 수행한다. + +- 입력값의 검증 +- 권한의 확인 +- 작업 순서 제어 + +API를 통해 만들어진 프로그램들은 최종적으로 이 **syscall**을 호출하는 형태가 된다. + +![시스템 콜]({{ img_path }}/2.1. 시스템 콜.png){: width='500'} + +![시스템 콜 2]({{ img_path }}/2.1. 시스템 콜 2.png){: width='500'} + + + +## 3. 눈으로 보는 syscall + +```c +#include + +int main() { + printf("Hello Syscall!!\n"); + return 0; +} +``` +{: file="sysc.c"} + +위와 같은 `sysc.c`{: .filepath} 파일을 생성하고 리눅스 환경에서 아래 명령어를 실행한다. + +```terminal +gcc sysc.c +strace -o sysc.log ./a.out +cat sysc.log +``` + +출력되는 로그를 살펴보면, 최종 출력(printf)은 syscall인 **write 함수**에 의해 수행됨을 알 수 있다. 파이썬이라 할지라도, 콘솔에 출력하기 위한 최종 방법은 **write 함수**이다. 다만 strace 로그가 훨씬 길다(= 파이썬이 느린 이유) + +`strace -T option` 을 이용해 syscall별 소요 시간을 출력할 수 있다. + + + +## 4. 시스템콜의 호출: Interface + +- OS가 제공하는 **Library** 또는 **API(Application Programming Interface)** + - xNIX: POSIX + - Windows: Win32 API +- 대부분의 xNIC 앱들은 `libc(glibc)` 링킹해서 사용 + - Windows: `kernel32.dll` (redirect to → `ntdll.dll`) +- 확인: `ldd` 명령어 + - `libc.so.6`: 표준 C 라이브러리 + - `a.out`, `echo`, `vim`, 심지어 python까지 모두 `libc` 사용 + - 내부적으론 표준 C 라이브러리 사용한다는 의미이다. + +### 4.1. 시스템콜의 Assembly 코드 확인 + +- `objdump` 명령어를 이용함 + +```terminal +objdump -M intel --disassemble=__write /lib/x86_64-linux-gnu/libc.so.6 +``` +- `-M intel`: Intel syntax로 출력 +- `--disassemble=__write`: write 함수만 출력 + +--- + +> 시스템콜은 일반 함수와는 다르게 언어에서 직접 호출이 불가능하며, 오직 CPU에 의해서만 호출됨 +{: .prompt-warning} + +- `eax`에 호출하고자 하는 syscall 번호 입력(OS 내부에 indexing 되어있음) +- syscall 명령 실행 → **해당 syscall 호출**함과 동시에 **CPU는 kernel 모드로 전환**된다. + +![syscall_assembly]({{ img_path }}/4.1. syscall_assembly.png){: width='500'} + +- `linux/arch/x86/entry/syscalls/syscall_64.tbl +`{: .filepath} 를 열어보면 아래 그림과 같이 syscall의 indexing을 확인할 수 있다. + +![syscalls]({{ img_path }}/4.1. syscalls.png) + + + +## 5. 디바이스 드라이버 + +커널과 하드웨어 그 중간 어딘가에 위치한다. + +- **API** → User-Level에 대한 인터페이스 +- **디바이스 드라이버** → 하드웨어에 대한 인터페이스 +- 하드웨어와 직접 연결되며, 신호에 대한 약속을 정하는 것 + - OS가 그 기준을 정의 + +![디바이스 드라이버]({{ img_path }}/5. 디바이스 드라이버.png) + + + +## 6. 커널의 형태 + +- 어떻게 설계하느냐에 따라 모양이 조금씩 달라짐 +- 현대에서는 **단일형 커널**과 **계층형 커널**을 하이브리드로 사용하기도 한다. +- 종류: **단일형 커널**, **계층형 커널**, **마이크로 커널** + +### 6.1. 단일형 커널 + +- **초창기 구조** +- 커널의 모든 기능이 한 덩어리로 되어 있음 + - 마치 main 함수에 모든 코드가 들어있는 느낌 + +![단일형 커널]({{ img_path }}/6.1. 단일형 커널.png){: width='400'} + +### 6.2. 계층형 커널 + +- **대부분의 구조** +- 비슷한 기능을 가진 모듈별로 계층을 만듦 → Kernel stack + +![계층형 커널]({{ img_path }}/6.2. 계층형 커널.png){: width='400'} + +### 6.3. 마이크로 커널 + +- 커널은 **아주 기본적 기능**만 제공 +- 대부분의 기능은 User-level로 이식, 프로세스간 통신으로 시스템 운영 + +![마이크로 커널]({{ img_path }}/6.3. 마이크로 커널.png){: width='400'} + + + +## 7. 가상머신 + +![가상머신]({{ img_path }}/7. 가상머신.png){: width='400'} + +OS마다 제공하는 **API/syscall**의 형태가 다르기 때문에, OS가 다르면 프로그램 호환이 안 되는 문제가 발생했다. 이런 문제를 해결하기 위해 등장한 것이 **가상머신**으로, **OS**와 **응용 프로그램** 사이에서 작동한다. + +- OS간 이식성 증가 → 하나의 프로그램, 다양한 환경 지원 +- 일종의 API 호환 레이어 +- 예시 + - Java JVM + - .NET Framework + - Python + - LLVM 등 + +--- + +가상머신은 **가상화(Virtualization)**와 다른 듯 하지만, 같은 개념이다. + +> 무엇인가를 "에뮬레이션" 하는 것이라면 어떤 SW이든 가상머신이라 할 수 있다. +{: .prompt-info} + +- **에뮬레이션**: 대상이 되는 sys를 다른 sys로 구현/재구현한 것 +- **시뮬레이션**: 대상이 되는 sys를 추상화한 것(Output만 모방) +- 공통점: 실제 HW를 사용할 필요 없이 작업 처리 환경 제공 + +Virtualization의 가상머신은 **컴퓨터 HW 시스템을 SW로 구현한 것**이고, 여기서의 가상머신은 **특정 플랫폼의 API 시스템을 SW로 구현한 것**이라는 차이점이 있을 뿐이다. \ No newline at end of file diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/2.2. \354\232\264\354\230\201\354\262\264\354\240\234 \354\227\255\355\225\240\352\263\274 \353\252\251\355\221\234.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/2.2. \354\232\264\354\230\201\354\262\264\354\240\234 \354\227\255\355\225\240\352\263\274 \353\252\251\355\221\234.png" new file mode 100644 index 0000000..954c577 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/2.2. \354\232\264\354\230\201\354\262\264\354\240\234 \354\227\255\355\225\240\352\263\274 \353\252\251\355\221\234.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/2.3. \354\232\264\354\230\201\354\262\264\354\240\234 \352\270\260\353\212\245.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/2.3. \354\232\264\354\230\201\354\262\264\354\240\234 \352\270\260\353\212\245.png" new file mode 100644 index 0000000..579774b Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/2.3. \354\232\264\354\230\201\354\262\264\354\240\234 \352\270\260\353\212\245.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/3.2. \354\235\274\352\264\204 \354\236\221\354\227\205 \354\213\234\354\212\244\355\205\234.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/3.2. \354\235\274\352\264\204 \354\236\221\354\227\205 \354\213\234\354\212\244\355\205\234.png" new file mode 100644 index 0000000..4fb4dbe Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/3.2. \354\235\274\352\264\204 \354\236\221\354\227\205 \354\213\234\354\212\244\355\205\234.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/3.3. \353\214\200\355\231\224\355\230\225 \354\213\234\354\212\244\355\205\234.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/3.3. \353\214\200\355\231\224\355\230\225 \354\213\234\354\212\244\355\205\234.png" new file mode 100644 index 0000000..fe3f63f Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/3.3. \353\214\200\355\231\224\355\230\225 \354\213\234\354\212\244\355\205\234.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/3.4. \353\213\244\354\244\221 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/3.4. \353\213\244\354\244\221 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.png" new file mode 100644 index 0000000..00b0315 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/3.4. \353\213\244\354\244\221 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/4. \354\235\274\352\264\204 \354\262\230\353\246\254 \354\213\234\354\212\244\355\205\234 VS \353\213\244\354\244\221 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/4. \354\235\274\352\264\204 \354\262\230\353\246\254 \354\213\234\354\212\244\355\205\234 VS \353\213\244\354\244\221 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.png" new file mode 100644 index 0000000..b2dd235 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-operating-system-intro/4. \354\235\274\352\264\204 \354\262\230\353\246\254 \354\213\234\354\212\244\355\205\234 VS \353\213\244\354\244\221 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/1. \354\232\264\354\230\201\354\262\264\354\240\234\354\235\230 \352\265\254\354\241\260.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/1. \354\232\264\354\230\201\354\262\264\354\240\234\354\235\230 \352\265\254\354\241\260.png" new file mode 100644 index 0000000..41b3ac7 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/1. \354\232\264\354\230\201\354\262\264\354\240\234\354\235\230 \352\265\254\354\241\260.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/2. \354\273\244\353\204\220\352\263\274 \354\213\234\354\212\244\355\205\234 \354\275\234.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/2. \354\273\244\353\204\220\352\263\274 \354\213\234\354\212\244\355\205\234 \354\275\234.png" new file mode 100644 index 0000000..e57bcc5 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/2. \354\273\244\353\204\220\352\263\274 \354\213\234\354\212\244\355\205\234 \354\275\234.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/2.1. \354\213\234\354\212\244\355\205\234 \354\275\234 2.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/2.1. \354\213\234\354\212\244\355\205\234 \354\275\234 2.png" new file mode 100644 index 0000000..c7c8239 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/2.1. \354\213\234\354\212\244\355\205\234 \354\275\234 2.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/2.1. \354\213\234\354\212\244\355\205\234 \354\275\234.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/2.1. \354\213\234\354\212\244\355\205\234 \354\275\234.png" new file mode 100644 index 0000000..8bafce4 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/2.1. \354\213\234\354\212\244\355\205\234 \354\275\234.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/4.1. syscall_assembly.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/4.1. syscall_assembly.png" new file mode 100644 index 0000000..f33841c Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/4.1. syscall_assembly.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/4.1. syscalls.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/4.1. syscalls.png" new file mode 100644 index 0000000..2a65177 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/4.1. syscalls.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/5. \353\224\224\353\260\224\354\235\264\354\212\244 \353\223\234\353\235\274\354\235\264\353\262\204.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/5. \353\224\224\353\260\224\354\235\264\354\212\244 \353\223\234\353\235\274\354\235\264\353\262\204.png" new file mode 100644 index 0000000..fd25e08 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/5. \353\224\224\353\260\224\354\235\264\354\212\244 \353\223\234\353\235\274\354\235\264\353\262\204.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/6.1. \353\213\250\354\235\274\355\230\225 \354\273\244\353\204\220.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/6.1. \353\213\250\354\235\274\355\230\225 \354\273\244\353\204\220.png" new file mode 100644 index 0000000..192683b Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/6.1. \353\213\250\354\235\274\355\230\225 \354\273\244\353\204\220.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/6.2. \352\263\204\354\270\265\355\230\225 \354\273\244\353\204\220.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/6.2. \352\263\204\354\270\265\355\230\225 \354\273\244\353\204\220.png" new file mode 100644 index 0000000..1d44409 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/6.2. \352\263\204\354\270\265\355\230\225 \354\273\244\353\204\220.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/6.3. \353\247\210\354\235\264\355\201\254\353\241\234 \354\273\244\353\204\220.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/6.3. \353\247\210\354\235\264\355\201\254\353\241\234 \354\273\244\353\204\220.png" new file mode 100644 index 0000000..ec4fb05 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/6.3. \353\247\210\354\235\264\355\201\254\353\241\234 \354\273\244\353\204\220.png" differ diff --git "a/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/7. \352\260\200\354\203\201\353\250\270\354\213\240.png" "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/7. \352\260\200\354\203\201\353\250\270\354\213\240.png" new file mode 100644 index 0000000..f411ab3 Binary files /dev/null and "b/assets/img/posts/\354\232\264\354\230\201\354\262\264\354\240\234/2024-04-01-os_structure/7. \352\260\200\354\203\201\353\250\270\354\213\240.png" differ