์์คํ ํ๋ก๊ทธ๋๋ฐ์ด๋ ์ด์์ฒด์ ์ ๊ฐ์ ์ปค๋ ๋ฐ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ์ฌ์ฉํ์ฌ ํ์ ๋ ๋ฒจ์์ ๋์ํ๋ ์์คํ ์ํํธ์จ์ด๋ฅผ ํ๋ก๊ทธ๋๋ฐํ๋ ๊ธฐ์ ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ํ์ ์ด์์ฒด์ ์ ๋ฐ์ ํ ์ฐ๊ด์ด ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด์์ฒด์ (Operating System, OS)์ ์ญํ ๊ณผ OS์์ ์ ๊ณตํ๋ ์์คํ ์ฝ์ ์ดํดํ๊ณ , OS์์ ์ ๊ณตํ๋ ์์คํ ์ฝ์ ์ข ๋ฅ๋ฅผ ํ์ ํ์ฌ ๊ฐ ๋ชฉ์ ์ ๋ง๋ ์์คํ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
1. Operating System
์ด์์ฒด์ ๋ ์ปดํจํฐ์ ์ฌ์ฉ์(๋๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋จ)์ ์ปดํจํฐ ํ๋์จ์ด ์ฌ์ด์ ์ค๊ฐ์ ์ญํ ์ ํ๋ ํ๋์ ํฐ ํ๋ก๊ทธ๋จ์ ๋๋ค.
๐ฆ ์ด์์ฒด์ ์ ๋ชฉํ
- ์ปดํจํฐ ์์คํ ์ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ๊ฒ ํด ์ค
- ์ปดํจํฐ ํ๋์จ์ด๋ฅผ ๋ฅ๋ฅ ์ ์ผ๋ก ์ฌ์ฉํจ
๐ฆ ์ด์์ฒด์ ์ ์ฃผ์ ๊ธฐ๋ฅ
- Multi-user ํ๊ฒฝ : ๋ค์ํ ์ ์ ๊ฐ ๋์ ์ฌ์ฉ์ด ๊ฐ๋ฅํจ
- Process and Scheduling : ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ๋์์ ๊ด๋ฆฌ
- User space and Kernel space : ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ
- Basic and Advanced I/O : ์ ์ถ๋ ฅ ์ฃผ๋ณ์ฅ์น์ ๋ํ ํต๋ก ์ ๊ณต
2. Unix History
- 1969๋ ์ผ ํฐ์จ๊ณผ ๋ฐ๋ ๋ฆฌ์น์ ์ํด ๋ฒจ ์ฐ๊ตฌ์์์ ๊ฐ๋ฐ๋จ (์ด์ ๋ธ๋ฆฌ ์ธ์ด๋ก ์์ฑ -> ํธํ์ฑ ๋ฌธ์ )
- 1973๋ C๋ก ๋ค์ ์ฐ์ -> ์ด๋ก ์ธํด portable ํด์ ธ์ OS์ ์ญ์ฌ๋ฅผ ๋ฐ๊พธ๊ฒ ๋จ (์ด์์ฑ, ํธํ์ฑ ์๋ ์์คํ ์ผ๋ก ๋ฐ์ )
- 1974๋ Thompson, Joy, Haley์ ๋ฒํด๋ฆฌ ํ์๋ค์ด UNIX์ BSD(Berkeley Software Distribution)๋ฅผ ๊ฐ๋ฐํจ
- BSD์ "System V"๋ก ๋ถ์ด๋์ด ๋ฐ์ ํจ
- Linux๋ Unix์ ์ ์ฌํ OS์
<์ดํ ๋ฐ์ ๊ณผ์ >
- 1984 4.2 BSD ์ถ์ (TCP/IP) : ๋คํธ์ํฌ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋จ
- 1986 4.3 BSD ์ถ์ (NFS) : ๋คํธ์ํฌ ํ์ผ ์์คํ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋จ
- 1991 Linus Torvalds๊ฐ Linux ์ปค๋ ์์ ์ ์์ํจ -> ๋ฆฌ๋ ์ค์ ํ์
- 1993 USL vs. BSDi ๋ถ์ ํด๊ฒฐ : NetBSD, ๊ทธ๋ฆฌ๊ณ FreeBSD๊ฐ ๋ง๋ค์ด์ง
- 1994 ๋จ์ผ UNIX ๊ท๊ฒฉ์ด ์๊ฐ๋จ
- 1995 4.4 BSD-Lite๊ฐ ์ถ์๋จ(๋ง์ง๋ง CSRG์ถ์) : OpenBSD๊ฐ NetBSD๋ก๋ถํฐ ํ์๋จ
- 2000 Darwin์ด๋ผ๋ ์ด๋ฆ์ ๋ฆฌ๋ ์ค ๋ง๋ค์ด์ง(derived from NeXT, FreeBSD, NetBSD)
- 2003 Xen; SELinux : ๋ฆฌ๋ ์ค + virture machine
- 2005 Hadoop; DTrace; ZFS; Solaris Containers
- 2006 AWS ("Cloud Computing" comes full circle)
- 2007 iOS; KVM appears in Linux
- 2008 Android; Solaris open sourced as OpenSolaris
3. Unix Philosophy
- Small is beautiful : ์ปค๋์ ์์์๋ก ์ข๋ค
- Make each program do one thing well
- Build a prototype as soon as possible
- Choose portability over efficiency : ์ด์์ฑ์ ๋ ์ค์ํ๊ฒ ์๊ฐํ๋ค
- Store data in flat text files
- Use shell scripts to increase leverage and potability : ์ด์์ฑ์ ์ํด shell script ์ง์
- Avoid captive user interfaces
- Make every program a filter
4. Linux History
- 1983๋ , GNU Project๊ฐ UNIX์ ๋์์ผ๋ก ์ถ๋ฐํจ (GNU's Not UNIX)
- 1985๋ ์ Richard Stollman์ GNU ์ ์ธ๋ฌธ์ ๋ฐํํด ์คํ์์ค ์ํํธ์จ์ด ์งํ๊ฐ ์์๋จ
- 1987๋ Andrew S. Tanenbaum์ Minix OS๋ฅผ ๊ฐ๋ฐํจ
- 1991๋ Linus Tovalds๊ฐ Minix์ ์ปค๋ ์์ค๋ฅผ ๊ณ ์ณ Linux OS๋ฅผ ๋ฐํํจ
<์ดํ ๋ฐ์ ๊ณผ์ >
- Linux first version : 1991.11 (Linus Torvalds)
- POSIX 1003.1 standard compliance : ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค์ ํ์ค
- Large areas of functions of System V and BSD 4.3 UNIX
- On GNU Public Licence : GPL & LGPL(Light GPL) -> "์์ค์ฝ๋๋ ์คํํ๋ค"
Pure application on Linux : no need to open the source
If you modified an existing OSS, you must open the source
- Supports most of CPU chips, devices
- From ver 2.0, supports multiprocessor soystems
- Linux is widely used for servers and embedded systems
- From Linux 2.6.x : preemptible kernel
Enhanced for real-time systems
- Standard : LSB5.0 (Linux Standard Base: Free Standard Group)
5. Advantage & Weakness
๐ Advantage
- ์คํ์์ค : ์๋ง์ ๊ฐ๋ฐ์๋ค์ด ๊ฐ๋ฐ, beta testing์ ๋์ฐธ
-> ๊ฐ๋ฐ์ ๋ฒ์ , ์์ ํ ๋ฒ์ , GNU spirit(๋ณต์ฌ, ์์ , ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅ)
- ๊ฐ๋ฐ์ ์ฌ์ดํธ์ ์ ์ ๊ทธ๋ฃน(LUG)์ด open ๋์ด ์์ด ์ ๋ณด๊ตํ์ด ๊ฐ๋ฅ
- Royalty free
๐ฃ Weakness
- ๋๋ฌด ๋น ๋ฅธ ๋ฒ์ ์ ๊ทธ๋ ์ด๋๊ฐ ์ด๋ฃจ์ด์ง
- ๋๋ฌด ๋ง์ ๋ฆฌ๋ ์ค ๊ณ์ด ์ด์์ฒด์ ๋ฅผ ์ง์ํ๋ ํ์ฌ๋ค
-> ์์ค์ฝ๋๊ฐ ์์ ํ๋์ง ๋ชปํจ. ์๋ก ๊ฐ๋ฐ๋๋ device driver์ ๋ํ ์์ ํ ๋ฌธ์ ๆ
- ์จ๊ฒจ์ง ํนํ, ๋ผ์ด์ ์ค ๋ฌธ์
6. Distribution, Development, Standardization
๐ฆ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ
- Debian๊ณ์ด (Raspbian, Ubuntu, etc) : ๋น์์ , ๋น์๋ฆฌ์
- Fedora๊ณ์ด (Red Hat, etc) : ์์ ์
- ์ด์ธ์๋ ๋ค์ํ ๋ค๋ฅธ ๋ฐฐํฌํ๋ค์ด ์กด์ฌํจ(OpenSUSE, Android, etc)
๐ฆ Open ํ๋ก์ ํธ
- GNU, GNOME (Desktop GUI ์ธํฐํ์ด์ค)
- Fedora : Redhat์ด ๋ฉ์ธ ์คํฐ์, ์ปค๋ฎค๋ํฐ๊ฐ open project๋ฅผ ์ง์งํจ
๐ฆ ์ ๋ช ํ ํ๋ก์ ํธ
: Apache, Jakarta, etc (์น ์๋ฒ, ์๋ฐ ํ๊ฒฝ)
7. Computer System Overview
๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํจํฐ ์์คํ ์ ํ๋์จ์ด๊ฐ ์กด์ฌํฉ๋๋ค. ์ปดํจํฐ ํ๋์จ์ด์ ๊ตฌ์ฑ์์๋ก๋ ๋ํ์ ์ผ๋ก CPU, Memory, ์ ์ถ๋ ฅ ์ฅ์น๊ฐ ์์ต๋๋ค.
์ด์์ฒด์ ๋ ํ๋์จ์ด๋ฅผ ๊ด๋ฆฌํ๋ ์์คํ ์ํํธ์จ์ด์ ๋๋ค. ์ด ์ด์์ฒด์ ์์์ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋จ์ด ๋์ํ๊ฒ ๋ฉ๋๋ค. ์์คํ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ๋, ์์คํ ์ฝ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด ํ์ํ ๊ธฐ๋ฅ์ ์ด์์ฒด์ ์ ์์ฒญํ ์ ์์ต๋๋ค.
8. Layered Linux Structure
์กฐ๊ธ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋ฆฌ๋ ์ค ์ํํธ์จ์ด์ structure ๋ํด ๊ทธ๋ฆผ์ ๋์ํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด์์ฒด์ ์์ ํต์ฌ์ ์ธ ์ญํ ์ ๋ด๋นํ๋ ๋ถ๋ถ์ด ๋ฐ๋ก ์ปค๋์ ๋๋ค. ์ด๋ ํต์ฌ์ ์ธ ์ญํ ์ 5๊ฐ์ง ๋ถ๋ฅ ๋๋ฉ๋๋ค.
๐ process management : CPU scheduling
๐ memory management : page replacement, demand paging, virture memory
๐ file system management : file system, swapping block I/O system, disk and tape drivers
๐ device driver management : signal terminal handling, character I/O system, terminal drivers
๐ network management
์ด ์ปค๋์ ์์ชฝ์ผ๋ก๋ ์์คํ ์ฝ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ณ , ์๋์ชฝ์ผ๋ก๋ ํ๋์จ์ด์ ์ปค๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์คํ ์ฝ ์ธํฐํ์ด์ค๋ ์ ์ ๊ฐ ์ปค๋์ ์์ญ์ ํ์ฉํ ์ ์๋๋ก ์ ๊ณตํ ์ธํฐํ์ด์ค์ ๋๋ค. ์ ์ ๋ ์์คํ ์ฝ์ wrapping ํ๊ณ ์๋ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฅผ ์ด์ฉํด ํ๋ก๊ทธ๋จ์ ์์ฑํ์ฌ shell, compiler, interpreter์ ํตํด ์ ์ ์ ์์ฒญ์ ์ปค๋์ ์ ๋ฌํ ์ ์์ต๋๋ค.
ํ๋์จ์ด ์ปค๋ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ๋ฉด ๋ง์ฐฌ๊ฐ์ง๋ก hardware device driver ๋ฑ์ ์ํํธ์จ์ด๋ฅผ ์ด์ฉํ์ฌ ํ๋์จ์ด๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
์ ๋ฆฌํ๋ฉด, ์ด์์ฒด์ ์ ํต์ฌ์ ์ธ ๋ถ๋ถ์ ์ปค๋์ด๊ณ ์ฃผ์ ๊ธฐ๋ฅ์ผ๋ก๋ process management, file management, memory menagement, device management, network management๊ฐ ์์ต๋๋ค.
์ด๋ฐ ์ปค๋์ ํต์ฌ ๊ธฐ๋ฅ์ user level program๋ค์ด ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณตํด์ฃผ๋ ์ธํฐํ์ด์ค๊ฐ ์์คํ ์ฝ ์ ๋๋ค.
๊ทธ๊ฒ์ ๋ค์ shell๊ณผ library routines์ด wrappingํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ณด์, shell๊ณผ library routine์ ํตํด ์ปค๋์ ์ ๊ทผํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๋ํ ์ด๋ค์ ๊ฑฐ์น์ง ์๊ณ ์ง์ ์ ์ธ system call์ ์ด์ฉํด์๋ ์ปค๋์ ์ ๊ทผํ ์ ์์ต๋๋ค.
๊ถ๊ทน์ ์ผ๋ก ์์คํ ํ๋ก๊ทธ๋๋ฐ์ ์์คํ ์ฝ๊ณผ ์์คํ ์ฝ์ ๋ ํ ํ๋ ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฃจํด์ ์ด์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋จ์ ์์ฑํด ์์คํ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
9. System Calls vs. Library Calls
์ ์ ๊ฐ ์ปค๋์ ์์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์์คํ ์ฝ์ ์ง์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ์์คํ ์ฝ ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๐ฆ System Calls
- ์ปค๋ ์ฝ๋๋ก ์ง์ ์ ๊ทผํ๋ entry point๊ฐ ์์
๐ฆ Library Calls
- ์ ์ ์ฝ๋๋ฅผ ์ํ๋ ์์คํ ์ฝ function์ผ๋ก ๋ณํ์์ผ์ค
- API(Application Programming Interface)๋ผ๊ณ ๋ ํจ
์์คํ ์์์ ์ฌ์ฉํ๋ ์ ์ ์ดํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ์ด์์ฒด์ ์ปค๋์ ์๋ ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ์์คํ ์ฝ์ ์ง์ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๊ณ , ์์คํ ์ฝ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌํ ์ํจ ์ ์ ๋ ๋ฒจ์ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ์ฌ์ฉํด ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ์์คํ ์ฝ์ ์ด์ฉํด ์ง์ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ์กฐ๊ธ ๋ ํจ์จ์ ์ด๊ณ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
์์คํ ์ฝ์ ๋ชจ๋ ๊ฒ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌํ ๋์ด์์ง ์๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌํ ๋์ด์์ง ์์ ๊ฒ๋ค์ ์์คํ ์ฝ์ ์ด์ฉํด ์ง์ ๋ถ๋ฌ์ ์ฃผ์ด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, read()๋ผ๋ ์์คํ ์ฝ์ ์ด์ฉํด ํ์ผ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์ํฉ์ ์ดํด๋ณด๋ฉด
read()๋ฅผ ์ด์ฉํด ์์คํ ์ฝ๋ก ๋ฐ๋ก ํธ์ถํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ fread()๋ฅผ ์ด์ฉํด ํ์ผ์ ์ฝ์ด์ค๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
read() ์์คํ ์ฝ์ ์ฌ์ฉํ๋ฉด ๋ฐ๋ก ์ปค๋์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ณ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ fread()๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ ์ ํ๋ก์ธ์ค๊ฐ system call library๋ฅผ ๋ถ๋ฌ์ค๊ณ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ trap routine์ ํตํด ์ปค๋๋ก ์ ๊ทผํฉ๋๋ค.
10. System Call by Processes
์ฌ๋ฌ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํ๋์ ์ด์์ฒด์ ์์คํ ์์ ์คํํ๋ ์ํฉ์ ๋์ํ ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์คํ ์ฝ์ ์ด์ฉํด ์ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ดํ์ ์์ฑ๋ ํ๋ก๊ทธ๋จ์ด ๋ฉํฐํ๋ก์ธ์ค ํ๊ฒฝ์์ ๋์์ ๋์๋์ด ์์คํ ์ฝ์ ์์ฒญํ๋ฉด, ์ด์์ฒด์ ๋ ์์ฒญ๋ ์์์ ๋ง๊ฒ ์ด๋ฅผ ์ฒ๋ฆฌํด์ ๊ฐ๊ฐ์ ๋ง๋ ์์ฒญ์ ์ ๋ฌํฉ๋๋ค.
'๐SUBJECT > ๐์์คํ ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์์คํ ํ๋ก๊ทธ๋๋ฐ/Linux] 10. Signal Timer(1) (0) | 2020.05.23 |
---|---|
[์์คํ ํ๋ก๊ทธ๋๋ฐ/Linux] 10. POSIX-semaphore (0) | 2020.05.23 |
[์์คํ ํ๋ก๊ทธ๋๋ฐ/Linux] 2. File I/O(1) (0) | 2020.05.06 |
[์์คํ ํ๋ก๊ทธ๋๋ฐ/Linux] 1-3. Linux Shell & Basic Commands (0) | 2020.05.05 |
๋๊ธ