no image
4. Paging
Physical memory에 virtual memory를 할당시켜 보려는 노력을 계속했었는데, contiguous한 성질 때문에, fragmentation이라는 한계에 부딛히게 된다. 이를 해결하고자 도입한 것이 paging이다. 아이디어는 간단하다. 메모리를 fixed-sized page로 잘게 나눠버리는 것이다. (보통 4KB) Translation (VA->PA) 방법은 기존과 동일하다. Logical address에서 일정 top bit로 table에 저장되어 있는 내용을 참고해 physical frame number를 찾고, offset만큼 이동해 데이터를 참조하게 된다. 실제 동작은 다음처럼 진행된다. Page Table Mapping 정보가 저장된 table이다. 프로세스마다 1개씩 가지게..
2023.12.05
no image
3. Memory Virtualization
하나의 프로그램만 돌린다면 메모리 가상화는 필요없다. 여러 프로그램을 동시에 돌리기 위해서 우리는 메모리 가상화를 사용한다. 멀티프로그래밍의 목표는 다음과 같다. Transparency: 프로세스는 메모리가 공유되고 있다는 것을 몰라야 함, 항상 사용 가능해야 함 Protection: OS나 다른 프로세스의 메모리 침범할 수 없음 Efficiency: 메모리 낭비가 없어야 함 Sharing: 주소 공간 공유할 수 있음 Memory address space OS가 프로세스에게 private한 address space를 줘야 하는데, 한 가지 문제가 있다. 메모리 공간이 다이나믹하다는 것이다. 실제로 메모리는 다음의 구조를 가진다. Code 영역은 static하다. 반면에, Stack이나 Heap은 dyna..
2023.12.01
no image
2. CPU Virtualization
CPU virtualization에는 크게 2가지 개념이 중요하다. 1번 포스트에서 다루었던, context switch랑 scheduler(스케쥴러)이다. Context switch는 방법론적인거고 scheduler는 정책적인 내용이다. 간단하게 자주 사용하는 용어부터 알아본다. Workload: 해야되는 프로세스(어플리케이션)의 양 Scheduler: ready process를 실행할 타이밍 결정하는 방법 Metric: 평가방법 스케쥴링의 목표(=평가 요소)는 다음과 같다. Turnaround time completion_time - arrival_time (minimize) Response time initial_schedule_time - arrival_time (minimize) Throughp..
2023.11.27
no image
1. Introduction
Operating system OS의 역할 중 중요한 3가지는 다음과 같다. Virtualization Concurrency Persistence Virtualization Process 프로세스는 execution stream with states이다. State에는 코드에 영향을 줄 수 있는 모든 자원이 포함된다. 가령 레지스터나 힙, 스택, 열린 파일 등이 있다. 프로그램 vs 프로세스 프로그램과 프로세스는 다른 개념이다. 프로그램은 정적인 코드와 데이터이며, 프로세스는 이런 프로그램의 dynamic instance이다. 쓰레드 vs 프로세스 쓰레드와 프로세스는 비슷한 개념이다. 쉽게 설명하자면, 쓰레드는 lightweight process이며, 하나의 프로세스는 여러개의 쓰레드를 사용할 수 있다...
2023.11.21
no image
[CHI 2001, Sensetable] Sensetable: A Wireless Object Tracking Platform for Tangible User Interfaces
오늘 소개할 논문은 Sensetable입니다. Humac Computer Interaction(HCI)의 Tangible User Inteface(TUI) 분야의 연구로, 과학관 같은 곳에서 프로젝트로 상호작용하는 것을 구현하였습니다. 기존에는 컴퓨터 비전 기술이나 wire를 puck(상호작용에 사용되는 물체)에 연결하여 TUI를 구현하였는데, 인식이 부정확하며 느린 반응속도를 보이거나, wire를 사용함으로써 거추장스러워지는 단점을 가지고 있었습니다. 본 연구에서는 이 문제를 해결하고자, 전자기를 이용해 물체를 인식하며 dial이나 modifier를 쉽게 장착할 수 있게 만들어, 보다 다양한 상호작용을 할 수 있게 된 것이 특징입니다. Introduction 기존 연구의 한계는 컴퓨터 비전 기술을 활용..
2023.11.18
Kubernetes
https://youtu.be/JHtO3kKajhk 위 영상을 참고해 작성한 글입니다. Kubernetes란? 컨테이너화된 응용 프로그램에 대한 자동화된 배포, 확장, 관리를 위한 오픈 소스 소프트웨어 Container가 1개~2개로 적은 수를 관리하는 경우, docker로 해결이 가능하지만 container가 100개, 1000개가 되면 관리가 어려워진다. 관리를 좀 더 쉽게 하고자 나온 것이 Kubernetes이다. 이 외에도 다양한 플랫폼이 있지만, 대기업에서 주로 사용되고 있는 것은 Kubernetes이다.
2023.07.20
no image
Container와 Docker
https://youtu.be/fCVPp-g9Ti4 https://youtu.be/LXJhA3VWXFA 위 영상을 보고 정리한 내용입니다. Container란? Process 격리를 기반으로 하는 application 전달 메커니즘 *Container vs Virtual Machine VM이 독립적 OS를 가지고 동작하는 반면에, Container는 Host OS 위에서 process 단위로 동작한다. 모든 container는 격리되며, 개별 파일 시스템을 가지고 동작하게 된다. 또한, 필요한 내용만 Bins/Libs에 저장되어 사용되기 때문에 가볍다는 장점이 있다. Docker란? Container 기반의 오픈소스 가상화 플랫폼 Container 관리 프로그램이라고 생각하면 된다. Registry에 I..
2023.07.20
10. Malware
Malware에는 다음의 타입이 있습니다. Infectious viruses, worms Concealment Trojan horses, logic bombs, rootkits Strealing information Spyware, keyloggers, screen scrapers For profit Dialers, scarewares, ransomware As platform for other attacks Botnets, backdoors Trojan horse 정상적인 SW처럼 동작하면서 정보를 훔치거나 시스템을 다운시킵니다. 트리거는 유저의 특정 행동입니다. Backdoor 시스템에 비밀 entry point를 만들어둡니다. Logic Bomb 합법적인 프로그램에 설치되어 있습니다. 특정 조건을 ..
2023.06.14
no image
9. Program Analysis
SW Vulnerability 분석에 관한 포스팅이다. 일반적으로 프로그램은 크고 복잡하기 때문에 자동으로 검출하는 것이 목표이다. 검출하고자 하는 취약점은 Syntactic과 Semantic이다. Syntactic Semantic buffer overflow integer overflow etc. login vulnerabilities - memory leak - race condition Bug를 찾기 위해서 분석하기도 하며, 다양한 program representation에서 수행된다. Static program analysis와 Dynamic program analysis가 있다. Program representations Source code Binary code Intermediate repr..
2023.06.14