๐ŸŽฏ Computer Science์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“— Today I Learned

๋””์ง€ํ„ธ ์ •๋ณด์˜ ํ‘œํ˜„

์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์˜ ๊ตฌ์„ฑ

  • ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜ - CPU

  • ์ฃผ๊ธฐ์–ต์žฅ์น˜ - Memory (RAM/ROM)

  • ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜ - Storage (HDD, SSD, optical discs, magnetic tapes, ...)

  • ์ž…์ถœ๋ ฅ์žฅ์น˜ - I/O Devices (keyboard, mouse, display, printer, network, ...)

์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜ (CPU)

  • ์ œ์–ด์žฅ์น˜ - ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•˜์—ฌ ๊ทธ ์‹คํ–‰์— ํ•„์š”ํ•œ ์ œ์–ด ์‹ ํ˜ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด

  • ALU - ์‚ฐ์ˆ  ๋ฐ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ๋“ฑ์„ ์ˆ˜ํ–‰

  • ๋ ˆ์ง€์Šคํ„ฐ - ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ ๋ฐ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ๋“ฑ์„ ์ €์žฅ

๋ช…๋ น์–ด ์ง‘ํ•ฉ ๊ตฌ์กฐ

  • ISA

    • ๋งˆ์ดํฌ๋กœํ”„๋กœ์„ธ์„œ๊ฐ€ ์ธ์‹ํ•ด์„œ ๊ธฐ๋Šฅ์„ ์ดํ•ดํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด
  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ์ •์˜

    • ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜๊ฐ€ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•

    • ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜์— ๋ช…๋ นํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด ๋ช…๋ น์–ด๋“ค์˜ ์ข…๋ฅ˜

    • ์ฃผ์†Œ์ง€์ •๋ฒ•

  • ๊ธฐ๊ณ„์–ด ๋ช…๋ น์–ด๋Š” ์‚ฌ๋žŒ์ด ์•Œ์•„๋ณด๊ธฐ ๋ถˆํŽธํ•˜๋ฏ€๋กœ ์ฃผ๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ํ‘œํ˜„

  • ๊ฐ™์€ ISA๋ฅผ ๊ฐ€์ง€๋Š” ์ปดํ“จํ„ฐ์—๋Š” ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜

  • ๋ช…๋ น์–ด ์ง‘ํ•ฉ ๊ตฌ์กฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ตฌํ˜„๋œ ๊ฒƒ

  • ๊ฐ™์€ ISA๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ microarchitecture๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๋„ ํ•จ

CISC vs RISC

  • CISC

    • ์—ฌ๋Ÿฌ ๋™์ž‘์„ ํ•œ๊บผ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ๋ช…๋ น์–ด๋“ค์„ ์ œ๊ณต

    • ๋ช…๋ น์–ด๋“ค์˜ ํ˜•์‹๊ณผ ๊ธธ์ด๊ฐ€ ๋‹ค์–‘ํ•˜๊ณ , ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹์œผ๋กœ๋„ ๋‹ค์–‘ํ•จ

    • ์ฃผ๋กœ ๋งˆ์ดํฌ๋กœ ํ”„๋กœ๊ทธ๋žจ ์ œ์–ด ๋ฐฉ์‹์˜ ํ”„๋กœ์„ธ์„œ๋กœ ๊ตฌ์„ฑ

  • RISC

    • ๊ณ ์ •๋œ ๊ธธ์ด์˜ ์ตœ์†Œ ์ข…๋ฅ˜์˜ ๋ช…๋ น์–ด๋“ค์„ ์ œ๊ณต

    • ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹ ์ตœ์†Œํ™”, Load/Store ๋ฐฉ์‹์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ

    • ํ•œ ํด๋ก ์‚ฌ์ดํด์— ํ•˜๋‚˜์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„

๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ธ

  • ๋ชจ๋“  ๋ช…๋ น์–ด๋“ค์˜ ์‹คํ–‰์„ ๋™์ผํ•œ ๋‹จ๊ฒŒ๋“ค๋กœ ๋‚˜๋ˆ„๊ณ 

  • ํ•œ ํด๋ก ์‚ฌ์ดํด์— ํ•œ ๋‹จ๊ณ„์”ฉ ์ง„ํ–‰ํ•˜๋„๋ก ํ•˜์—ฌ

  • ๋™์‹œ์— ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๋“ค์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋‹จ๊ณ„๋ฅผ ์‹คํ–‰

  • ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„

    • Instruction Fetch (IF)

    • Instruction Decode (ID)

    • Execute (EX)

    • Memory access (MEM)

    • Write Back (WB)

  • ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๊ฐ€ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฐ ๋‹จ๊ณ„์—์„œ ๋™์‹œ์— ์ฒ˜๋ฆฌ๋˜์–ด ์ฒ˜๋ฆฌ ํšจ์œจ์ด ๋†’์•„์ง




ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฒˆ์—ญ๊ณผ ์‹คํ–‰

ํ”„๋กœ๊ทธ๋žจ ๋ฒˆ์—ญ/์‹คํ–‰์˜ ๋ชจ๋ธ ๋น„๊ต

  • ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐฉ์‹์˜ ์žฅ์ 

    • ๋ฒˆ์—ญ์„ ์‹คํ–‰ ์ด์ „์— ํ•ด ๋‘๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ๊ณต๋“ค์—ฌ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Œ

    • ๋”ฐ๋ผ์„œ ์ฝ”๋“œ ์‹คํ–‰์˜ ํšจ์œจ์ด ๋†’์Œ

  • ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์˜ ์žฅ์ 

    • ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ ์˜ฎ๊ฒจ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•จ
    • ๋Œ€ํ™”ํ˜• ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•จ
  • ์ด ๋‘ ๋ฐฉ์‹์˜ ์žฅ์ ์„ ํƒํ•œ(์–ด์ค‘๊ฐ„ํ•œ) ๋ฐฉ๋ฒ•๋“ค๋„ ์ด์šฉ๋จ

๊ฐ€์ƒ๊ธฐ๊ณ„๋ฅผ ์ด์šฉํ•œ ์‹คํ–‰ ๋ชจ๋ธ

  • ์›์‹œ์ฝ”๋“œ(source code)๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฒˆ์—ญํ•˜์—ฌ ์‹คํ–‰์ฝ”๋“œ(executable) ์ƒ์„ฑ

  • ์‹คํ–‰์ฝ”๋“œ๋Š” ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์—์„œ ์ง์ ‘ ์‹คํ–‰

  • ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์€ ์›์‹œ์ฝ”๋“œ๋ฅผ ๋ฒˆ์—ญ๊ธฐ๊ฐ€ ํ•œ ์ค„์”ฉ ํ•ด์„ํ•˜๋ฉฐ ๋ฐ”๋กœ ์‹คํ–‰

  • ๊ฐ€์ƒ๊ธฐ๊ณ„(VM, Virtual Machine)๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹์€

    • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์›์‹œ์ฝ”๋“œ๋ฅผ ๋ฐ”์ดํŠธ์ฝ”๋“œ(byte code)๋กœ ๋ณ€ํ™˜

    • ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” ํ•˜๋“œ์›จ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ€์ƒ๊ธฐ๊ณ„(VM)์—์„œ ์‹คํ–‰

    • VM์ด ์„ค์น˜๋œ ์–ด๋–ค ์ปดํ“จํ„ฐ์—์„œ๋„ ๋™์ผํ•œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

    • ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ๊ณต์œ ๋„ ์ผ๋ฐ˜์ 

  • ์˜ˆ์‹œ

    • Java: ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋กœ ๋ณ€ํ™˜

    • ๊ฐ ํ”Œ๋žซํผ์˜ Java Virtual Machine(JVM)์—์„œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰

    • Windows, Linux, Intel, AMD ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ๋™์ผํ•œ ๋ฐ”์ดํŠธ์ฝ”๋“œ ์‹คํ–‰ ๊ฐ€๋Šฅ

์ปดํŒŒ์ผ๋Ÿฌ์™€ ๋ง์ปค/๋กœ๋”

  • ์›์‹œ์ฝ”๋“œ(source code)๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ(assembly code)๋กœ ๋ณ€ํ™˜

  • ์–ด์…ˆ๋ธ”๋Ÿฌ(assembler)๊ฐ€ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋ชฉ์ ์ฝ”๋“œ(object code)๋กœ ๋ณ€ํ™˜

  • ์—ฌ๋Ÿฌ ๋ชฉ์ ์ฝ”๋“œ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(libraries)๋ฅผ ๋ง์ปค(linker)๊ฐ€ ๊ฒฐํ•ฉํ•˜์—ฌ ์ ์žฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ(loadable module) ์ƒ์„ฑ

  • ๋กœ๋”(loader)๊ฐ€ ์ด ๋ชจ๋“ˆ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•ด ์‹คํ–‰

๋ง์ปค(Linker)์™€ ๋กœ๋”(Loader)

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชฉ์  ์ฝ”๋“œ(obj1, obj2 ๋“ฑ)์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(lib1, lib2 ๋“ฑ)๋ฅผ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๊ณผ์ •์— ๋ง์ปค๊ฐ€ ์‚ฌ์šฉ๋จ

    • ๋ณดํ†ต ์ปดํŒŒ์ผ๋Ÿฌ์™€ ํ•จ๊ป˜ ์‹คํ–‰๋จ

    • ์—ฌ๋Ÿฌ ๋ฉ์–ด๋ฆฌ์˜ ๋ชฉ์  ์ฝ”๋“œ๋ฅผ ์—ฐ๊ฒฐ

    • ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“ˆ ์‚ฌ์ด์˜ ์ฃผ์†Œ ์ƒํ˜ธ ์ฐธ์กฐ๋ฅผ ํ•ด๊ฒฐ

  • ๋ง์ปค๊ฐ€ ์™„์„ฑํ•œ ์‹คํ–‰ ํŒŒ์ผ(executable)์€ ๋กœ๋”์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์‹คํ–‰

    • ๋กœ๋”๋Š” ์šด์˜์ฒด์ œ์˜ ์ผ๋ถ€๋กœ์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ๋‹ด๋‹น
    • ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ์„ ์ €์žฅ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์  ์ ์žฌ ๋ฌธ์ œ๋„ ํ•จ๊ป˜ ํ•ด๊ฒฐ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Libraries)

  • ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๊ณตํ†ต์ ์œผ๋กœ ์ด์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ์ค€๋น„ํ•ด ๋‘” ๊ฒƒ

    • ์ฝ˜์†” ๋ฐ ํŒŒ์ผ ์ž…์ถœ๋ ฅ

    • GUI

    • ์ˆ˜ํ•™ ์—ฐ์‚ฐ

    • ์ธํ„ฐ๋„ท ์ ‘๊ทผ

    • ๋ฐ์ดํ„ฐ ๋ถ„์„

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ข…๋ฅ˜

    • ์ •์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Static Library): ๊ฐ ํ”„๋กœ๊ทธ๋žจ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ
    • ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Shared Library): ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ผํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉ
  • ์ •์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐ๊ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๋ณต์‚ฌ๋˜์–ด ํฌํ•จ๋จ

  • ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋‚˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํšจ์œจ์ด ๋†’์•„์ง




์šด์˜์ฒด์ œ์˜ ์—ญํ• ๊ณผ ๊ตฌ์กฐ

์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ถ„๋ฅ˜

  • ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด
    • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์„ ์šด์šฉํ•˜๊ฑฐ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์ด์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชจ์Œ
    • ์šด์˜์ฒด์ œ(operating system), ์ปดํŒŒ์ผ๋Ÿฌ(compiler), ๋ง์ปค/๋กœ๋”(linker/loader), ์‹œ์Šคํ…œ ์šด์šฉ ๋„๊ตฌ ๋“ฑ
  • ์‘์šฉ ์†Œํ”„ํŠธ์›จ์–ด
    • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ์‘์šฉ๋  ๋ถ„์•ผ์— ๋”ฐ๋ฅธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ง„ ์†Œํ”„ํŠธ์›จ์–ด
    • ์›Œ๋“œ ํ”„๋กœ์„ธ์„œ(word processor), ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ(spreadsheet), ์›น ๋ธŒ๋ผ์šฐ์ €(web browser), ๊ฒŒ์ž„(game) ๋“ฑ

์šด์˜์ฒด์ œ(Operating System)์˜ ์ •์˜์™€ ์—ญํ• 

  • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ์‚ด์•„๊ฐ€๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด(์˜ ๋ชจ์Œ)
  • ์šด์˜์ฒด์ œ์˜ ์—ญํ• 
    • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž์›์„ ๊ด€๋ฆฌ
      • ํ”„๋กœ์„ธ์„œ ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ์ž…์ถœ๋ ฅ ์žฅ์น˜, ํŒŒ์ผ ๋“ฑ
    • ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹œ์Šคํ…œ ์ž์›์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต
      • ๋‹จ์ผ ์‚ฌ์šฉ์ž ์‹œ์Šคํ…œ: ๋‹ค์†Œ ๊ฐ„๋‹จ
      • ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ์‹œ์Šคํ…œ: ๋‹ค์†Œ ๋ณต์žก

์šด์˜์ฒด์ œ์˜ ๋ถ„๋ฅ˜

  • ์šด์šฉ ๋Œ€์ƒ ์‹œ์Šคํ…œ์˜ ์ข…๋ฅ˜
    • ๋ฒ”์šฉ(general purpose) / ๋‚ด์žฅํ˜•(embedded)
  • ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์„œ๋น„์Šค ์ œ๊ณต ์—ฌ๋ถ€
    • ๋‹จ์ผ ์‚ฌ์šฉ์ž(single-user) / ๋‹ค์ค‘ ์‚ฌ์šฉ์ž(multi-user)
  • ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜ ๊ตฌ์„ฑ
    • ๋‹จ์ผ ํ”„๋กœ์„ธ์„œ(uniprocessor) / ๋‹ค์ค‘ ํ”„๋กœ์„ธ์„œ(multiprocessor)
  • ์ž‘์—… ์ฒ˜๋ฆฌ ๋ฐฉ์‹
    • ์‹œ๋ถ„ํ•  ๋ฐฉ์‹(batch processing) / ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(multiprogramming)

์šด์˜์ฒด์ œ์˜ ์—ญํ• 

  • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž์› ๊ด€๋ฆฌ
    • ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ
    • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
    • ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ
    • ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๊ด€๋ฆฌ
  • ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹œ์Šคํ…œ ํ™œ์šฉ ๋„๊ตฌ ์ œ๊ณต
    • ํ…์ŠคํŠธ ์—๋””ํ„ฐ
    • ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋„๊ตฌ
    • ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋„๊ตฌ(ํ™˜๊ฒฝ)
    • ์›น ๋ธŒ๋ผ์šฐ์ € ๋“ฑ

์šด์˜์ฒด์ œ ์ปค๋„(kernel)

  • ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ(core) ๋ถ€๋ถ„์— ์œ„์น˜
    • ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ์ธก๋ฉด์— ๋Œ€ํ•œ ์™„์ „ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง
    • ์‚ฌ์šฉ์ž(๋ฐ ํ”„๋กœ์„ธ์Šค) ๊ฐ„ ์ถฉ๋Œ ๋˜๋Š” ์นจํ•ด๋กœ๋ถ€ํ„ฐ์˜ ๋ณดํ˜ธ์™€ ํ•จ๊ป˜ ํšจ์œจ์ ์ด๋ฉด์„œ ๊ณต์ •ํ•œ ์ž์› ๊ณต์œ (๋ฐฐ๋ถ„) ๋‹ด๋‹น
  • ์‹œ์Šคํ…œ ์ž์›์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ œ์–ด๊ถŒ์„ ๊ตฌ์‚ฌํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋“œ์›จ์–ด์˜ ์ง€์›์ด ํ•„์š”
    • ๋Œ€ํ‘œ์ ์œผ๋กœ User mode์™€ Kernel mode, ์˜ˆ์™ธ ๋ ˆ๋ฒจ(exception levels) ๊ตฌ๋ถ„
  • ์ปค๋„ ์™ธ์˜ ๋ถ€๋ถ„(โ€œ์‚ฌ์šฉ์žโ€๋ผ๊ณ  ๋ถ€๋ฆ„)์„ ์ด๋ฃจ๋Š” ์ฝ”๋“œ๋Š” ์‹œ์Šคํ…œ ์ž์› ์ ‘๊ทผ์„ ์œ„ํ•ด ์ปค๋„์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉ
    • ๋Œ€ํ‘œ์ ์œผ๋กœ ์‹œ์Šคํ…œ ์ฝœ(system call)์„ ํ†ตํ•ด ์ปค๋„์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ
  • ์ปค๋„์€ ํ•˜๋“œ์›จ์–ด(CPU, ๋ฉ”๋ชจ๋ฆฌ, ๊ฐ์ข… ์žฅ์น˜)์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• 
    • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ง์ ‘ ํ•˜๋“œ์›จ์–ด์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ณดํ˜ธํ•˜๊ณ , ์ž์› ๊ด€๋ฆฌ์™€ ๋ณด์•ˆ์„ ๋‹ด๋‹น

์‹œ์Šคํ…œ ์ฝœ(System Calls)

  • ์šด์˜์ฒด์ œ ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์š”์ฒญ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค
  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ณดํ†ต ๊ณ ๊ธ‰ API(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ํ•จ์ˆ˜๋“ค์„ ํ†ตํ•ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์— ์ ‘๊ทผ
  • ์‹œ์Šคํ…œ ์ฝœ์˜ ํ˜ธ์ถœ์€ ํ”„๋กœ์„ธ์„œ์˜ ์‹คํ–‰ ๋ฌธ๋งฅ(context)์„ ํŠน๊ถŒ ๋ชจ๋“œ(privileged mode, kernel mode)๋กœ ์ „ํ™˜์‹œํ‚ด
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์ € ๋ชจ๋“œ(user mode)์—์„œ ์‹คํ–‰๋˜๋˜ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๋ฉด ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜
    • ์ปค๋„ ๋ชจ๋“œ์—์„œ ์‹œ์Šคํ…œ ์ฝœ์„ ์‹คํ–‰ํ•œ ๋’ค, ๋‹ค์‹œ ์œ ์ € ๋ชจ๋“œ๋กœ ๋ณต๊ท€
  • ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ํŒŒ์ผ ์ž…์ถœ๋ ฅ, ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๋„คํŠธ์›Œํฌ ๋“ฑ ๋‹ค์–‘ํ•œ ์ปค๋„ ๊ธฐ๋Šฅ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ์‹œ์Šคํ…œ ์ฝœ์€ ์šด์˜์ฒด์ œ์˜ ์•ˆ์ •์„ฑ๊ณผ ๋ณด์•ˆ์„ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์ปค๋„ ๋ชจ๋“œ์—์„œ๋งŒ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋จ



ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์™€ ์Šค์ผ€์ค„๋ง

ํ”„๋กœ์„ธ์Šค (Process)

  • ํ”„๋กœ์„ธ์Šค๋ž€?
    • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…
  • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด๋ฃธ
  • ํ”„๋กœ์„ธ์Šค๋Š” ์ƒ๋ช… ์ฃผ๊ธฐ(life cycle)๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌ
  • ํ”„๋กœ๊ทธ๋žจ โ‰  ํ”„๋กœ์„ธ์Šค
    • ํ”„๋กœ๊ทธ๋žจ: ์‹คํ–‰์ด ์ค€๋น„๋œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฉ์–ด๋ฆฌ
    • ํ”„๋กœ์„ธ์Šค: ์ง€๊ธˆ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ƒ๋ช…์ฒด

ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ (Process Management)

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

ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ (Process State)

  • ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์—ฌ๋Ÿฌ ์ƒํƒœ๋ฅผ ๊ฑฐ์นจ
  • ์ฃผ์š” ์ƒํƒœ
    • Start: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜์Œ ์ƒ์„ฑ๋œ ์ƒํƒœ
    • Ready: ์‹คํ–‰ ์ค€๋น„๊ฐ€ ๋œ ์ƒํƒœ, CPU ํ• ๋‹น์„ ๊ธฐ๋‹ค๋ฆผ
    • Running: CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹ค์ œ๋กœ ๋ช…๋ น์„ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ
    • Waiting / Blocked: ์ž…์ถœ๋ ฅ ๋“ฑ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ
    • Terminated: ์‹คํ–‰์ด ์™„๋ฃŒ๋˜์–ด ์ข…๋ฃŒ๋œ ์ƒํƒœ
  • ์ƒํƒœ ์ „์ด
    • Start โ†’ Ready: ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ด
    • Ready โ†’ Running: CPU๊ฐ€ ํ• ๋‹น๋จ(dispatch)
    • Running โ†’ Waiting/Blocked: ์ž…์ถœ๋ ฅ ๋“ฑ ์ž์›์„ ๊ธฐ๋‹ค๋ฆด ๋•Œ
    • Waiting/Blocked โ†’ Ready: ์ž์›์ด ์ค€๋น„๋˜๋ฉด
    • Running โ†’ Ready: ์ธํ„ฐ๋ŸฝํŠธ ๋“ฑ์œผ๋กœ CPU๋ฅผ ๋นผ์•—๊ธธ ๋•Œ
    • Running โ†’ Terminated: ์‹คํ–‰ ์ข…๋ฃŒ(exit)
  • ๊ฐ ์ƒํƒœ์™€ ์ „์ด๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ์Šค์ผ€์ค„๋ง ๋ฐ ์ž์› ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ์ œ์–ดํ•จ

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ (Processes & Threads)

  • ํ”„๋กœ์„ธ์Šค
    • ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค
    • ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ํŒŒ์ผ, ๋ ˆ์ง€์Šคํ„ฐ, ์Šคํƒ ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ
  • ์Šค๋ ˆ๋“œ
    • ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰ ํ๋ฆ„์„ ๋‹ด๋‹นํ•˜๋Š” ์ตœ์†Œ ๋‹จ์œ„
    • single-threaded process: ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์กด์žฌ
    • multithreaded process: ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ™์€ ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ํŒŒ์ผ์„ ๊ณต์œ ํ•˜์ง€๋งŒ, ๊ฐ์ž ๋ ˆ์ง€์Šคํ„ฐ์™€ ์Šคํƒ์„ ๊ฐ€์ง
    • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

๋™์‹œ์„ฑ (Concurrency)

  • ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‹คํ–‰๋˜๋Š” ๊ตฌ์กฐ
  • ํ•˜๋‚˜์˜ CPU์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•จ
  • ๋ฌธ๋งฅ ์ „ํ™˜(context switch)์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ๊ฐ ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰ ๊ตฌ๊ฐ„์ด ๊ต์ฐจ
  • ๋™์‹œ์„ฑ์„ ๊ฐ€์ง€๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” ๋™๊ธฐํ™”(synchronization)๊ฐ€ ํ•„์š”
    • ๋™๊ธฐํ™”๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ์ž์›์— ๋™์‹œ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋งค์šฐ ์ค‘์š”ํ•œ ์šด์˜์ฒด์ œ ์ž„๋ฌด ์ค‘ ํ•˜๋‚˜

์Šค์ผ€์ค„๋ง (Scheduling)

  • ์Šค์ผ€์ค„๋ง ๋ฌธ์ œ: ์–ด๋А ์ˆœ๊ฐ„์— ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฌธ์ œ
  • ํšจ์œจ์„ฑ(efficiency)๊ณผ ๊ณต์ •์„ฑ(fairness) ์‚ฌ์ด์˜ ์ดํ•ด๋“์‹ค ๊ด€๊ณ„
    • ์‘๋‹ต ์‹œ๊ฐ„(response time)์„ ์ตœ์†Œํ™”
      • ๊ฐ ์ž‘์—…์ด ๋„์ฐฉํ–ˆ์„ ๋•Œ๋ถ€ํ„ฐ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„์ด ์ค‘์š”
    • ์‹œ์Šคํ…œ ์ฒ˜๋ฆฌ์œจ(throughput, ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌ ์ž‘์—…๋Ÿ‰)์„ ๊ทน๋Œ€ํ™”
      • ๋ฌธ๋งฅ ์ „ํ™˜์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ์‘๋‹ต ์‹œ๊ฐ„๊ณผ ๊ฐ™์€ ๊ธฐ์ค€์ด ์•„๋‹˜
    • ๊ณต์ •์„ฑ์„ ํ•ด์น˜์ง€ ๋ง ๊ฒƒ
      • ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์ž‘์—…์ด ์˜์›ํžˆ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” starvation ํ˜„์ƒ ๋ฐฉ์ง€

์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์˜ˆ: FCFS (First-Come, First-Served Scheduling)

  • ๋จผ์ € ๋„์ฐฉํ•œ ์ž‘์—…๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ์ฒ˜๋ฆฌ
  • ์˜ˆ์‹œ
    • ์ž‘์—… Pโ‚, Pโ‚‚, Pโ‚ƒ๊ฐ€ ๋„์ฐฉ
    • ์†Œ์š”์‹œ๊ฐ„: Pโ‚=24, Pโ‚‚=3, Pโ‚ƒ=3
    • ๋Œ€๊ธฐ ์‹œ๊ฐ„(waiting time): Pโ‚=0, Pโ‚‚=24, Pโ‚ƒ=27
    • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„(average waiting time): (0+24+27)/3 = 17
    • ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„(average response time): (24+27+30)/3 = 27
  • FCFS๋Š” ๋‹จ์ˆœํ•˜์ง€๋งŒ, ๊ธด ์ž‘์—…์ด ๋จผ์ € ์˜ค๋ฉด ์ „์ฒด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๋Š” ๋‹จ์ ์ด ์žˆ์Œ



๋ฉ”๋ชจ๋ฆฌ์™€ ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ

์ปดํ“จํŒ… ์‹œ์Šคํ…œ ์ž์›์˜ ์ถ”์ƒํ™”

  • ํ”„๋กœ์„ธ์Šค: CPU ์‹œ๊ฐ„์— ๋Œ€ํ•œ ์ถ”์ƒํ™”
    • ๊ฐ ํ”„๋กœ์„ธ์Šค(์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ)๋Š” ์ž์‹ ์—๊ฒŒ CPU ์‹œ๊ฐ„์ด ์ „์ฒด ์ค‘ ์ผ๋ถ€๊ฐ€ ์ฃผ์–ด์ง€๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ€์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ: ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์ถ”์ƒํ™”
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ „์ฒด ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋ชจ๋‘ ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ€์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ํŒŒ์ผ์‹œ์Šคํ…œ: ์ž…์ถœ๋ ฅ ์žฅ์น˜๋“ค์„ ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ถ”์ƒํ™”
    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์‹ค์ œ ์ž…์ถœ๋ ฅ ์žฅ์น˜์˜ ๋™์ž‘ ๋ฐฉ์‹๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ํŒŒ์ผ์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ผ๊ด€๋œ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์žฅ์น˜์˜ ์ž…์ถœ๋ ฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ

๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ(Virtual Memory)์™€ ์šด์˜์ฒด์ œ์˜ ์—ญํ• 

  • ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์ฃผ๊ณ , ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ โ€œ์ด์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒโ€์œผ๋กœ ๊ด€๋ฆฌ
  • ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚จ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์นจ๋ฒ”ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ณดํ˜ธ
  • ์ด๋Ÿฌํ•œ ์ผ๋“ค์€ ๋ชจ๋‘ ์šด์˜์ฒด์ œ์˜ ๋ชซ
  • MMU(Memory Management Unit)๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ์™€ ์‹ค์ œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ์˜ ๋งคํ•‘์„ ๋‹ด๋‹น
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ๋งŒ์˜ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ, ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋Š” MMU๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋งคํ•‘๋จ

ํŽ˜์ด์ง•์— ์˜ํ•œ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๋ณ€ํ™˜

  • ๊ฐ€์ƒ ์ฃผ์†Œ๋Š” ํŽ˜์ด์ง€ ๋””๋ ‰ํ„ฐ๋ฆฌ(Page Directory)์™€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”(Page Table)์„ ๊ฑฐ์ณ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ”„๋ ˆ์ž„(Frame)์œผ๋กœ ๋ณ€ํ™˜๋จ
  • 32๋น„ํŠธ ์ฃผ์†Œ ์˜ˆ์‹œ
    • ์ƒ์œ„ ๋น„ํŠธ: ํŽ˜์ด์ง€ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ธ๋ฑ์Šค
    • ์ค‘๊ฐ„ ๋น„ํŠธ: ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์ธ๋ฑ์Šค
    • ํ•˜์œ„ ๋น„ํŠธ: ํŽ˜์ด์ง€ ๋‚ด ์˜คํ”„์…‹
  • PDE(Page Directory Entry), PTE(Page Table Entry), BR(Base Register) ๋“ฑ์œผ๋กœ ๊ณ„์ธต์  ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด์ง
  • ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ ํŽ˜์ด์ง€๋Š” 4KB ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๋จ

์š”๊ตฌ ํŽ˜์ด์ง•(Demand Paging)๊ณผ ์ง€์—ญ์„ฑ(Locality)

  • ํŽ˜์ด์ง€ ํดํŠธ(page fault)๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ „์ฒด ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋งค์šฐ ์ค‘์š”
    • ์ง€์—ญ์„ฑ(locality)์— ๊ทผ๊ฑฐํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋“ค์„ ์ €์žฅ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ์ฝ์–ด๋“ค์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ
    • ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ(cache memory) ๊ด€๋ฆฌ์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹
    • ๊ต์ฒด ๊ธฐ๋ฒ•์œผ๋กœ LRU(Least Recently Used) ๋ฐ ๊ทผ์‚ฌํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉ
  • ์ฐธ์กฐ์˜ ์ง€์—ญ์„ฑ(locality of references)
    • ์‹œ๊ฐ„์  ์ง€์—ญ์„ฑ(temporal locality): ์ง€๊ธˆ ์ฐธ์กฐ๋œ ์ฃผ์†Œ๋Š” ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ๋˜๋‹ค์‹œ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์Œ
    • ๊ณต๊ฐ„์  ์ง€์—ญ์„ฑ(spatial locality): ์ง€๊ธˆ ์ฐธ์กฐ๋œ ์ฃผ์†Œ์™€ ๊ฐ€๊นŒ์šด ์ฃผ์†Œ๊ฐ€ ๋ฏธ๋ž˜์— ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์Œ

ํŒŒ์ผ์‹œ์Šคํ…œ (Filesystem)๊ณผ ์žฅ์น˜ ๊ด€๋ฆฌ

  • ์ €์žฅ์žฅ์น˜(storage)์˜ ํŠน์„ฑ
    • ์ €์žฅ์žฅ์น˜๋Š” ๋‹จ์ˆœ ์ž…์ถœ๋ ฅ ๊ธฐ๋Šฅ ์™ธ์—๋„ ๋ฉ”๋ชจ๋ฆฌ ์„œ๋ธŒ์‹œ์Šคํ…œ(๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ)์˜ ์ผ๋ถ€๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Œ
    • ์ž…์ถœ๋ ฅ์žฅ์น˜์™€๋Š” ๊ตฌ๋ถ„๋˜๋Š” ํŠน์„ฑ์„ ๊ฐ€์ง
  • ์šด์˜์ฒด์ œ์˜ ํŒŒ์ผ์‹œ์Šคํ…œ ์ถ”์ƒํ™”
    • ์šด์˜์ฒด์ œ๋Š” ์ €์žฅ์žฅ์น˜๋ฅผ ํŒŒ์ผ์‹œ์Šคํ…œ ํ˜•ํƒœ๋กœ ์ถ”์ƒํ™”ํ•ด ๊ด€๋ฆฌ
    • ๋””์Šคํฌ ๋“œ๋ผ์ด๋ธŒ ๋“ฑ ์ €์žฅ์žฅ์น˜๋Š” ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๊ด€๋ฆฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์šด์˜์ฒด์ œ์˜ ์ผ๋ถ€(ํŒŒ์ผ์‹œ์Šคํ…œ)๋กœ ํ†ตํ•ฉ
    • ์‚ฌ์šฉ์ž๋Š” ํŒŒ์ผ์ด๋ผ๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ
  • UNIX ๊ณ„์—ด์˜ ํŒŒ์ผ์‹œ์Šคํ…œ ํŠน์ง•
    • ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์žฅ์น˜๋ฅผ ํŒŒ์ผ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ์ถ”์ƒํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉ
    • ์ผ๊ด€๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ์—ฌ๋Ÿฌ ์žฅ์น˜์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • ์žฅ์น˜ ๊ด€๋ฆฌ์ž๋Š” ์ปค๋„์˜ ๋ฌธ๋งฅ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ๊ฐ ์žฅ์น˜์˜ ์ž…์ถœ๋ ฅ ๋ฐ ์ œ์–ด๋ฅผ ๋‹ด๋‹น

์ž…์ถœ๋ ฅ ์žฅ์น˜ ๊ด€๋ฆฌ ๊ตฌ์กฐ

  • ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ์Šคํ…œ ์ฝœ(system call)์„ ํ†ตํ•ด ์šด์˜์ฒด์ œ ์ปค๋„์— ์ž…์ถœ๋ ฅ ์š”์ฒญ
  • ์ปค๋„์€ ๊ฐ ์žฅ์น˜๋ณ„ ์žฅ์น˜ ๊ด€๋ฆฌ์ž(device driver)์—๊ฒŒ ์š”์ฒญ์„ ์ „๋‹ฌ
  • ์žฅ์น˜ ๊ด€๋ฆฌ์ž๋Š” ์‹ค์ œ ํ•˜๋“œ์›จ์–ด์™€ ์ง์ ‘ ํ†ต์‹ ํ•˜๋ฉฐ ์ž…์ถœ๋ ฅ ๋™์ž‘์„ ์ˆ˜ํ–‰
  • ํ•˜๋“œ๋””์Šคํฌ, USB, ์‚ฌ์šด๋“œ, ๋งˆ์ดํฌ ๋“ฑ ๋‹ค์–‘ํ•œ ์žฅ์น˜๊ฐ€ ๊ฐ๊ฐ์˜ ์žฅ์น˜ ๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ์ œ์–ด๋จ

์žฅ์น˜ ๊ด€๋ฆฌ์ž(Device Driver)

  • ์žฅ์น˜ ๊ด€๋ฆฌ์ž๋Š” ํ•˜๋“œ์›จ์–ด ์ œ์กฐ์‚ฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์ง€๋งŒ, ์šด์˜์ฒด์ œ์˜ ์ผ๋ถ€๋กœ ํฌํ•จ๋˜๊ธฐ๋„ ํ•จ
  • ์œˆ๋„์šฐ, ๋ฆฌ๋ˆ…์Šค ๋“ฑ ์šด์˜์ฒด์ œ์˜ ์žฅ์น˜ ๊ด€๋ฆฌ์ž ๋ฉ”๋‰ด์—์„œ ๋‹ค์–‘ํ•œ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
    • ์˜ˆ: ๋„คํŠธ์›Œํฌ ์–ด๋Œ‘ํ„ฐ, ๋””์Šคํฌ ๋“œ๋ผ์ด๋ธŒ, ๋ชจ๋‹ˆํ„ฐ, ํ‚ค๋ณด๋“œ, ํ”„๋ฆฐํ„ฐ, ์‚ฌ์šด๋“œ, ๋ธ”๋ฃจํˆฌ์Šค ๋“ฑ
  • ์žฅ์น˜ ๊ด€๋ฆฌ์ž๋Š” ๊ฐ ํ•˜๋“œ์›จ์–ด์˜ ์ž…์ถœ๋ ฅ, ์ œ์–ด, ์ƒํƒœ ๊ด€๋ฆฌ ๋“ฑ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹น
  • ์‚ฌ์šฉ์ž๋‚˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์žฅ์น˜ ๊ด€๋ฆฌ์ž ๋•๋ถ„์— ํ•˜๋“œ์›จ์–ด์˜ ์„ธ๋ถ€ ๋™์ž‘์„ ๋ชฐ๋ผ๋„ ์ผ๊ด€๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ์žฅ์น˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ
profile
๐ŸŒฑ๊ฐœ๋ฐœ ๊ธฐ๋ก์žฅ

0๊ฐœ์˜ ๋Œ“๊ธ€