Post

Operating System/ thread/ CPU process

๐Ÿ‘ฟ ์ปดํ“จํ„ฐ์˜ ๊ณ ์งˆ์ ์ธ ๋ฌธ์ œ

(1) ์ €์žฅ๊ณต๊ฐ„ ๋ฌธ์ œ

  • ์–ธ์ œ: RAM, DISK ์šฉ๋Ÿ‰ ๋ถ€์กฑ
  • ๋ฌธ์ œ: ์„ฑ๋Šฅ ์ €ํ•˜, ๋ฐ์ดํ„ฐ ์œ ์‹ค

(2) ์˜ค๋ฒ„ ํด๋ฝ

  • ์–ธ์ œ: CPU, RAM ๊ณผ๋‹ค ์‚ฌ์šฉ(์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฌด๊ฑฐ์šด ํ”„๋กœ๊ทธ๋žจ์„ ํ•œ ๋ฒˆ์— ๋Œ๋ฆฌ๋ฉด)
  • ๋ฌธ์ œ: ์ˆ˜๋ช… ๋‹จ์ถ•, ์‹œ์Šคํ…œ ์ถฉ๋Œ

(3) ์˜ค๋ฒ„ ํžˆํŒ…

  • ์–ธ์ œ: CPU, RAM
  • ๋ฌธ์ œ: CPU์— ์—ด์„ ๋ฐœ์ƒ์‹œํ‚ด, ์ฟจ๋ง์žฅ์น˜ ํ•„์š”

โœ… Operating System

1
2
3
4
5
6
7
8
9
//OS ๊ธฐ๋ณธ
             -------------------  ์œ ์ € ๐Ÿ™‚  -------------------
                   /                                \
        ๐Ÿ’ฟ System Software                        ๐Ÿ’ฟ  Application Software
(์‹ค์ œ ๋‚ด์žฅ๋œ ํ”„๋กœ๊ทธ๋žจ, ๋””์Šคํฌ ๊ด€๋ฆฌ)               (๋‚ด๊ฐ€ ์„ค์น˜ํ•œ ํ”„๋กœ๊ทธ๋žจ, ํฌ๋กฌ, ์›Œ๋“œ, ๊ฒŒ์ž„...)
                                   |
                          ๐Ÿƒ๐Ÿปโ€โ™‚๏ธ Operating System
                                   |
                   ๐Ÿ’พ  HardWare(CPU, RAM, Input, Output)

โ˜‘๏ธ Functions of operating system

โœ”๏ธ ์‹œ์Šคํ…œ ์ž์›๊ด€๋ฆฌ

์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆด ๋•Œ CPU์˜ ์ฝ”์–ด ๋ช‡ ๊ฐœ ์“ธ์ง€, RAM์€ ๋ช‡ ๊ธฐ๊ฐ€ ์“ธ์ง€ ์•Œ์•„์„œ ๊ฒฐ์ •ํ•ด ์คŒ
์—†๋‹ค๋ฉด ๋‚ด๊ฐ€ pptํ‚ฌ ๋–„ CPU๋Š” 2์ฝ”์–ด ํ• ๋‹น, RAM์€ 4GB์จโ€ฆ์ด๋ ‡๊ฒŒ ์ผ์ผํžˆ ํ†ต์ œํ•ด์•ผ ํ•จ.
์šฐ๋ฆฌ๊ฐ€ ์˜์‹ํ•˜์ง€ ์•Š๊ณ ๋„ ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ์›จ์–ด ์•Œ์•„์„œ ๊ด€๋ฆฌํ•จ.

โœ”๏ธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ด€๋ฆฌ

์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ํด๋ฆญํ•ด ์‹คํ–‰ํ•  ๋•Œ ์‹คํ–‰ ๋ถ€์Šคํ„ฐ ํ†ต์ œ
์ƒˆ๋กœ์šด ์•ฑ์„ ๊น”์•˜์„ ๋•Œ ์œ„์น˜ ์ •๋ณด๋ฅผ ํ—ˆ์šฉํ• ์ง€/์•ˆ ํ• ์ง€ ๊ถŒํ•œ ํ†ต์ œ
๋งŒ์•ฝ ์—†๋‹ค๋ฉด, ์ƒˆ๋กœ ๊น ์•ฑ์ด ์šฐ๋ฆฌ์˜ ๊ถŒํ•œ์„ ์นจ๋ฒ”ํ•  ์ˆ˜ ์žˆ์Œ!

โœ”๏ธ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ง€์› GIU

์•„์ด์ฝ˜, ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ–ˆ์„ ๋–„ ๊ทธ ์•ˆ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ๋“ค ์ง€์›
๊ทธ๋ž˜์„œ ์œ ์ €๋Š” ๋‹จ์ˆœํžˆ ํด๋ฆญํ–ˆ์„ ๋ฟ์ด์ง€๋งŒ ๊ทธ ๋’ท๋‹จ ์„ธ์„ธํ•œ ๋‚ด์šฉ๋“ค ์‹คํ–‰ํ•˜๋Š” OS
์œ ์ €์—๊ฒŒ๋Š” ํŽธ๋ฆฌํ•˜๊ณ  ๋ณด๊ธฐ์ข‹์€ ๊ธฐ๋Šฅ Graphic User Interface

โœ… Program? Process? Processor?

โœ”๏ธ Program

ํ”„๋กœ๊ทธ๋žจ์ด๋ž€, ๋ช…๋ น์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ด์ฒด
ํ‰์†Œ ํ”„๋กœ๊ทธ๋žจ์€ ์ •์ ์œผ๋กœ ์ฃฝ์€ ๋“ฏ ๋””์Šคํฌ์—์„œ ์ง€๋‚ด๋‹ค๊ฐ€
์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํด๋ฆญํ•˜๋ฉด RAM์— ์—…๋กœ๋“œ. ์‹คํ–‰ ์ค€๋น„
์šฐ๋ฆฌ๊ฐ€ ํƒ€์ž๋ฅผ ์น˜๋ฉด CPU๊ฐ€ ๊ณ„์‚ฐ์„ ํ•˜๋ฉฐ ์‹คํ–‰

โœ”๏ธ Process

ํ”„๋กœ๊ทธ๋žจ์ด RAM์— ์˜ฌ๋ผ์˜ค๊ฒŒ ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค
์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ

โœ”๏ธ Processor?

ํ”„๋กœ์„ธ์„œ: CPU

Program ์ƒ์„ฑ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-04 แ„‹แ…ฉแ„’แ…ฎ 11 18 39

  • ์ค€๋น„: ํ”„๋กœ์„ธ์„œ ํ• ๋‹น์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ
  • ๋””์ŠคํŒจ์น˜: ์‹ค์ œ๋กœ CPU๋ž‘ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋ฉฐ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š” ์ƒํƒœ,
  • ์‹คํ–‰: CPU๋ฅผ ์ ์œ ํ•˜๋ฉฐ ๋ช…๋ น์–ด ์‹คํ–‰
  • ์ข…๋ฃŒ:
  • ๋Œ€๊ธฐ: ์ด๋ฒคํŠธ, ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์„ ๋•Œ ์—ฌ๊ธฐ์„œ ํ•ด๊ฒฐ์ด ๋˜๋ฉด ๋‹ค์‹œ ์‹คํ–‰, ๋งŒ์•ฝ ํ•ด๊ฒฐ์ด ์•ˆ ๋˜์–ด ๊บผ๋ฒ„๋ฆฌ๋ฉด ์ข…๋ฃŒ

๐Ÿ’ก dispatch

When the CPU becomes available
(either because the current process has finished its execution or due to a time-sharing mechanism),
the operating systemโ€™s scheduler selects a process from the ready queue to be dispatched or assigned to the CPU.
Dispatching is a crucial aspect of multitasking operating systems,
where multiple processes share the CPU in a time-sliced manner.
The goal is to efficiently utilize the CPU and provide the illusion of concurrent execution to users and applications.

โœ… thread

ํ”„๋กœ์„ธ์Šค ๋‚ด ๋™์‹œ์— ์ง„ํ–‰๋˜๋Š” ์ž‘์—… ๊ฐˆ๋ž˜
ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ์†Œ 1๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค. (main ์Šค๋ ˆ๋“œ)

JAVA์˜ public static void main์ด ๋ฐ”๋กœ main thread

์ดˆ๊ธฐ์—๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€๋ฒผ์›Œ์„œ ๋”ฐ๋กœ ์Šค๋ ˆ๋“œ๊ฐ€ ์—†์–ด๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง์ ‘ CPU๋ž‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ์‹คํ–‰๋˜์—ˆ๋Š”๋ฐ,
์ด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„ˆ๋ฌด ๋ฌด๊ฒ๊ณ  ๋ณต์žกํ•ด์ ธ์„œ
ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž˜๊ฐœ ์กฐ๊ฐœ์„œ ๊ด€๋ฆฌ => ์Šค๋ ˆ๋“œ

single threaded process

  • ํ”„๋กœ์„ธ์Šค๋Š” 1๊ฐœ, ๋ฐ”๋กœ main ์Šค๋ ˆ๋“œ
  • ํŒ”์ด 2๊ฐœ

multi threaded process

  • main ์Šค๋ ˆ๋“œ + child thread
  • ํŒ”์ด 4๊ฐœ! ํšจ์œจ์ด ๋” ์ข‹๋‹ค.

โœ… CPU์˜ process ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

๐Ÿค” ์š”๋ฆฌ์‚ฌ๊ฐ€ ์š”๋ฆฌ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด ๋ณด์ž.

  • CPU๊ฐ€ ์ผ์„ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ: ์ˆœ์ฐจ์  ํ”„๋กœ๊ทธ๋žจ
    ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์„ ํ•œ๊บผ๋ฒˆ์— ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ,
    ์ฒซ ๋ฒˆ์จฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋‚˜๋จธ์ง€๋Š” ๊ธฐ๋‹ค๋ ค์•ผโ€ฆ
    ๋Š๋ฆฌ๊ณ  ํ•œ๊บผ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ํ•˜๋ ค๋ฉด ์†ํ„ฐ์ง!!

  • CPU๊ฐ€ ์ผ์„ ํšจ์œจ์ ์œผ๋กœ ํ•œ๋‹ค๋Š” ๊ฒƒ: ๋ณ‘ํ–‰ ์ฒ˜๋ฆฌ
    ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ณผ์ •์„ ๋Œ๋ฉฐ ์กฐ๊ธˆ์”ฉ ์ฒ˜๋ฆฌ,
    ์ด๊ฒƒ ํ•˜๋‹ค๊ฐ€ ์กฐ๊ธˆ ์งฌ๋‚ด์„œ ๋‹ค๋ฅธ ๊ฒƒ๋„ ํ•˜๊ณ ~

๐Ÿ‘๐Ÿป ๋ณ‘ํ–‰ ์ฒ˜๋ฆฌ concurrency

Context Switching: ์—ฌ๋Ÿฌ ๊ฐ€์ง€ context๋ฅผ ์กฐ๊ธˆ ์กฐ๊ธˆ์”ฉ ์ˆ˜ํ–‰ํ•œ๋‹ค.
CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ผ์„ ์กฐ๊ธˆ์กฐ๊ธˆ์”ฉ ์ฒ˜๋ฆฌ
โžก๏ธ ๋ณด๋Š” ์‚ฌ๋žŒ ์ž…์žฅ์—์„œ๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐ
ํ”„๋กœ๊ทธ๋žจ๋“ค์ด โ€œ์ค€๋น„โ€ ์ƒํƒœ์˜€๋‹ค๊ฐ€ CPU์„ ์ ์œ ํ•ด โ€œ์‹คํ–‰โ€ 0.1์ดˆ ๋™์•ˆ ํ•œ ํ›„ ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ CPU์ฃผ๊ณ โ€ฆ
ํฌ๋กฌ 0.1์ดˆ ์—ด๊ณ , ๊ทธ ๋‹ค์Œ ๊ฒŒ์ž„ 0.5์ดˆ ์‹คํ–‰, ๊ทธ ๋‹ค์Œ ์Œ์•… ์•ฑ 0.1์ดˆ ์‹คํ–‰โ€ฆ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ˜๋ณตํ•ด ๋น„์Šทํ•œ ์‹œ๊ฐ„๋Œ€์— ํฌ๋กฌ๋„ ์—ด๊ณ , ์Œ์•…์•ฑ๋„ ์—ด๊ณ  ๊ฒŒ์ž„๋„ ์‹คํ–‰ํ•˜๊ณ .

๐Ÿ‘๐Ÿป ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ Parallelism

๋ˆ์„ ๋” ์จ์„œ ์š”๋ฆฌ์‚ฌ๋ฅผ ๋” ๋งŽ์ด ๊ณ ์šฉ โžก๏ธ CPU ์ฝ”์–ด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ โžก๏ธ multicore
๊ฐ ์ฝ”์–ด๊ฐ€ ์—ญํ• ์„ ํ•˜๋‚˜์”ฉ ๋งก์•„์„œ ๋‹ด๋‹น.

Parallel Programming https://soheeparklee.github.io/posts/OS-parallel/

๐Ÿ’ก ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•œ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ + ๋น„ ์ˆœ์ฐจ์  ๋ฐฉ์‹

๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์ข‹์€๋ฐ, ๊ทผ๋ฐ ์ผ ๋๋‚ด๊ณ  ์‰ฌ๊ณ  ์žˆ๋Š” ์ฝ”์–ด๋Š”์š”? ๋น„ํšจ์œจ์ ์ด์ง€ ์•Š๋‚˜์š”?
ํ•˜๋‚˜์˜ ์ฝ”์–ด๊ฐ€ ๋‹ค๋ฅธ ์ผํ•˜๋Š” ์ฝ”์–ด๋ณด๋‹ค ์ผ์ด ๋จผ์ € ๋๋‚˜๋ฉด, ์ผํ•˜๋Š” ์ฝ”์–ด์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‹คํ–‰.
ํฌ๋กฌ ์•ฑ ์—ฌ๋Š” ์ฝ”์–ด ์ผ ๋๋‚˜๋ฉด, ์œˆ๋„์šฐ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ์ฝ”์–ด์˜ ์Šค๋ ˆ๋“œ ๊ฐ€์ ธ์™€์„œ ๊ฐ™์ด ๋„์™€์คŒ.
์ฝ”์–ด๊ฐ€ ์Šค๋ ˆ๋“œ๋ฅผ ๋‚˜๋ˆ„์–ด ๊ฐ€์ง€๊ณ , ์ฝ”์–ด๊ฐ€ ์ ๋‹นํžˆ ๋ณ‘ํ–‰ ์ฒ˜๋ฆฌ์™€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ชจ๋‘ ํ•˜๋ฉด์„œ ์Šค๋ ˆ๋“œ ๋‹จ์œ„๋กœ ์ผํ•œ๋‹ค.

โœ… Shell, Terminal

terminal์„ ํ†ตํ•ด shell์„ ์—ด์–ด ์‹คํ–‰์‹œํ‚จ๋‹ค.

โœ… process ๊ด€๋ จ linux ๋ช…๋ น์–ด

ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ปค๋„์— ์˜ํ•ด ๊ตฌ์กฐํ™” ๋œ ํ˜•ํƒœ๋กœ ์œ ์ง€๋˜๊ธฐ ์œ„ํ•ด PID๋ผ๋Š” ํ”„๋กœ์„ธ์Šค ID์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
ps ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ถœ๋ ฅ
ps aux ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด์„œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-04 แ„‹แ…ฉแ„’แ…ฎ 8 26 57

while true; do echo "hello; sleep3; done ์ง์ ‘ shell ๋ช…๋ น์–ด ์‹คํ–‰ํ•˜๊ธฐ

CTRL C ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ
CTRL Z ํ”„๋กœ์„ธ์Šค ์ผ์‹œ ์ •์ง€
fg %1 ํ”„๋กœ์„ธ์Šค ๋‹ค์‹œ ์‹คํ–‰(์—ฌ๊ธฐ์„œ 1์€ ํ”„๋กœ์„ธ์Šค ๋„˜๋ฒ„)

jobs ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•ด์ค€๋‹ค. ํ•œ๋งˆ๋””๋กœ, ๋‚ด๊ฐ€ ๋‚ด๋ฆฐ ๋ช…๋ น์–ด ์ถœ๋ ฅํ•ด ์คŒ.

โœ… terminal ๋ช…๋ น์–ด

pwd ๋‚˜ ์ง€๊ธˆ ์–ด๋”” ์žˆ์–ด? ๋‚ด ์œ„์น˜ ๋งํ•ด์ค˜
cd ๋‚˜ ์ด๋™ํ• ๋ž˜
cd cd /Users/sohmac/Documents Documents ๋กœ ์ด๋™ํ• ๋ž˜
ls ์ด ํด๋” ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ ๋‹ค ๋งํ•ด๋ด
javac HelloWorld.java HelloWorld.java ์ปดํŒŒ์ผ ํ•ด ์ค˜, ๊ทธ ๊ฒฐ๊ณผ HelloWorld.class ๋งŒ๋“ค์–ด์ง„๋‹ค.
java HelloWorld HelloWorld.class์„ ์‹คํ–‰ํ•ด์ค˜.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-04 แ„‹แ…ฉแ„’แ…ฎ 9 20 24

This post is licensed under CC BY 4.0 by the author.