TIL (Today I Learned)/OS

[OS] ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๊ฐœ์š”

loki d 2021. 10. 31. 17:50
728x90
์Šคํฌ๋ฆฐ์ƒท 2021-10-29 ์˜ค์ „ 12 40 16

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๊ฐœ์š”

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

  • ์ปดํ“จํ„ฐ์˜ ๋‘๋‡Œ(์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜)
  • ์ปดํ“จํ„ฐ์˜ ๋ชจ๋“œ ์žฅ์น˜์˜ ๋™์ž‘ ์ œ์–ด์Šคํฌ๋ฆฐ์ƒท 2021-10-29 ์˜ค์ „ 12 41 11

๋ ˆ์ง€์Šคํ„ฐ

  • ํ”„๋กœ์„ธ์„œ ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ
    • ํ”„๋กœ์„ธ์„ ์‚ฌ์šฉํ•  ๋ฐ์ž ์ €์žฅ
    • ์ปดํ“จํ„ด์— ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ
  • ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ข…๋ฅ˜
    • ์šฉ๋„ ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜
      • ์ „์šฉ / ๋ฒ”์šฉ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ •๋ณด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ์—ฌ๋ถ• ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜
      • ์‚ฌ์šฉ์ž ๊ฐ€์‹œ / ์‚ฌ์šฉ์ž ๋ถˆ๊ฐ€์‹œ
    • ์ €์žฅ ํ•˜๋Š” ์ •๋ณด์˜ ์ข…๋ฅ˜ ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜
      • ๋ฐ์ดํ„ฐ / ์ฃผ์†Œ / ์ƒํƒœ

ํ”„๋กœ์„ธ์„œ์˜ ๋™์ž‘

์Šคํฌ๋ฆฐ์ƒท 2021-10-29 ์˜ค์ „ 12 43 23

๋ฉ”๋ชจ๋ฆฌ

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋А ์žฅ์น˜ (๊ธฐ์–ต์žฅ์น˜)
  • ๋ฉ”๋ชจ๋ฆฌ์˜ ์ข…๋ฅ˜์Šคํฌ๋ฆฐ์ƒท 2021-10-29 ์˜ค์ „ 12 44 04 - ์ฃผ๊ธฐ์–ต์žฅ์น˜(Main memory) : ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ˆ˜ํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ๊ณ  ๋ฐ์ดํ„ฐ ์ €์žฅ / ๋””์Šคํฌ ์ž…์ถœ๋ ฅ ๋ณ‘๋ชฉํ˜„์ƒ(I/O bottleneck) ํ•ด์†Œ
์Šคํฌ๋ฆฐ์ƒท 2021-10-29 ์˜ค์ „ 12 45 04

๋ฉ”๋ชจ๋ฆฌ์˜ ์ข…๋ฅ˜

  • ์บ์‹œ : ํ”„๋กœ์„ธ์„œ ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ (L1, L2 ์บ์‹œ ๋“ฑ)
    • ์†๋… ๋น ๋ฅด๊ณ  ๊ฐ€๊ฒฉ์ด ๋น„์Œˆ
  • ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ž…์ถœ๋ ค ๋ณ‘๋ชฉํ˜„์ƒ ํ•ด์†Œ

์บ์‹œ์˜ ๋™์ž‘

  • ์ผ๋ฐ˜์ ์œผ๋กœ HW์ ์œผ๋กœ ๊ด€๋ฆฌ ๋จ
  • ์บ์‹œ ํžˆํŠธ : ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์ด ์บ์‹œ ์กด์žฌ
  • ์บ์‹œ ๋ฏธ์Šค : ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์ด ์—†๋Š” ๊ฒฝ์šฐ์Šคํฌ๋ฆฐ์ƒท 2021-10-29 ์˜ค์ „ 12 50 10

์ง€์—ญ์„ฑ (Locality)

  • ๊ณต๊ฐ„์  ์ง€์—ญ์„ฑ (Spatial locality)
    • ์ฐธ์กฐํ•œ ์ฃผ์†Œ์™€ ์ธ์ ‘ํ•œ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํŠน์„ฑ
    • ์˜ˆ) ์ˆœ์ฐจ์  ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰
  • ์‹œ๊ฐ„์  ์ง€์—ญ์„ฑ (Temporal locality)
    • ํ•œ ๋ฒˆ ์ฐธ์กฐํ•œ ์ฃผ์†Œ๋ฅผ ๊ณง ๋‹ค์‹œ ์ฐธ์กฐํ•˜๋Š” ํŠน์„ฑ
    • ์˜ˆ) For๋ฌธ ๋“ฑ์˜ ์ˆœํ™˜ ๋ฌธ
  • ์ง€์—ญ์„ฑ์€ ์บ์‹œ ์ ์ค‘๋ฅ ๊ณผ ๋ฐ€์ ‘
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ ์œ„ํ•œ ์ค‘์š”ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜
์Šคํฌ๋ฆฐ์ƒท 2021-10-29 ์˜ค์ „ 12 52 50

๋ฉ”๋ชจ๋ฆฌ์˜ ์ข…๋ฅ˜

  • ๋ณด์กฐ๊ธฐ์–ต ์žฅ์น˜
    • ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
    • ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜์—†์Œ
    • ใ…›ใ…‡๋Ÿ‰์ด ํฌ๊ณ  ๊ฐ€๊ฒฉ์ด ์ €๋ ด

๋ฉ”๋ชจ๋ฆฌ์™€ ์šด์˜์ฒด์ œ

  • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ๊ด€๋ฆฌ

    • ํ”„๋กœ๊ทธ๋žจ์˜ ์š”์ฒญ์— ๋”ฐ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ํšŒ์ˆ˜
    • ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
      int main(void)
      {
      char *string;
      // Allocate space for a path name
      string = malloc( _MAX_PATH);
      ...
      }
  • ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

    • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ
    • ๋…ผ๋ฆฌ์ฃผ์†Œ -> ๋ฌผ๋ฆฌ์ฃผ์†Œ ๋ณ€ํ™˜

System Bus

  • ํ•˜๋“œ์›จ์–ด๋“ค์ด ๋ฐ์ดํ„ฐ ๋ฐ ์‹ ํ˜ธ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฌผ๋ฆฌ์ ์ธ ํ†ต๋กœ์Šคํฌ๋ฆฐ์ƒท 2021-10-29 ์˜ค์ „ 12 55 56 ์Šคํฌ๋ฆฐ์ƒท 2021-10-29 ์˜ค์ „ 12 56 13

์ฃผ๋ณ€ ์žฅ์น˜

  • ํ”„๋กœ์„ธ์„œ์™€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ์™ธ ํ•˜๋“œ์›จ์–ด๋“ค
    • ์ž…๋ ฅ ์žฅ์น˜
    • ์ถœ๋ ฅ ์žฅ์น˜
    • ์ €์žฅ ์žฅ์น˜

์ฃผ๋ณ€์žฅ์น˜์™€ ์šด์˜์ฒด์ œ

  • ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„ ๊ด€๋ฆฌ
    • ์ฃผ๋ณ€ ์žฅ์น˜ ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต
  • ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ
    • ์ฃผ๋ณ€ ์žฅ์น˜์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ
  • ํŒŒ์ผ ๋””์Šคํฌ ๊ด€๋ฆฌ
    • ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ
    • ๋””์Šคํฌ ๊ณต๊ฐ„ ๊ด€๋ฆฌ