๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“SUBJECT/๐Ÿ“š์‹œ์Šคํ…œํ”„๋กœ๊ทธ๋ž˜๋ฐ

[์‹œ์Šคํ…œํ”„๋กœ๊ทธ๋ž˜๋ฐ/Linux] 1. Introduction

by Yun Je 2020. 4. 24.

 ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ์šด์˜์ฒด์ œ์™€ ๊ฐ™์€ ์ปค๋„ ๋ฐ ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜์œ„ ๋ ˆ๋ฒจ์—์„œ ๋™์ž‘ํ•˜๋Š” ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ธฐ์ˆ ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•˜์œ„ ์šด์˜์ฒด์ œ์™€ ๋ฐ€์ ‘ํ•œ ์—ฐ๊ด€์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๋”ฐ๋ผ์„œ ์šด์˜์ฒด์ œ(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 ํ”„๋กœ์ ํŠธ

   - www.sourceforge.net 

   - www.linux-foundation.org 

   - 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

์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜์˜ ์šด์˜์ฒด์ œ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ํ•˜๋Š” ์ƒํ™ฉ์„ ๋„์‹ํ™” ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

 ์‹œ์Šคํ…œ ์ฝœ์„ ์ด์šฉํ•ด ์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ ์ดํ›„์— ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ ๋™์‹œ์— ๋™์ž‘๋˜์–ด ์‹œ์Šคํ…œ ์ฝœ์„ ์š”์ฒญํ•˜๋ฉด, ์šด์˜์ฒด์ œ๋Š” ์š”์ฒญ๋œ ์ˆœ์„œ์— ๋งž๊ฒŒ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์„œ ๊ฐ๊ฐ์— ๋งž๋Š” ์š”์ฒญ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. 

๋Œ“๊ธ€