[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค & ์Šค๋ ˆ๋“œ

ํ”„๋กœ์„ธ์Šค? ์Šค๋ ˆ๋“œ?


https://ybdeveloper.tistory.com/20?category=782261

 

[OS] ํ”„๋กœ์„ธ์Šค๋ž€?

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

ybdeveloper.tistory.com

  • ํ”„๋กœ์„ธ์Šค : ํ”„๋กœ๊ทธ๋žจ์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์‹คํ–‰์ค‘์ธ ์ž‘์—…์„ ์˜๋ฏธ 
  • ์Šค๋ ˆ๋“œ : ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ์ž‘์—… ๋‹จ์œ„ 
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ตœ์†Œ 1๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ์Œ  ์˜ˆ) Android์˜ UI Thread 

 

ํ”„๋กœ์„ธ์Šค ๊ตฌ์กฐ & ์Šค๋ ˆ๋“œ ๊ตฌ์กฐ


ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ๊ฐ ๋ณ„๋„์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›์œผ๋ฉฐ, ๋…๋ฆฝ์ ์ž„

  • Code : ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ (ํ”„๋กœ๊ทธ๋žจ ๋ช…๋ น)
  • Data : ์ „์—ญ๋ณ€์ˆ˜, ์ •์ ๋ณ€์ˆ˜, ๋ฐฐ์—ด (์ดˆ๊ธฐํ™” ๋œ ๋ฐ์ดํ„ฐ)
  • Heap : ๋™์  ํ• ๋‹น ์‹œ ์‚ฌ์šฉ (new(), malloc()..) 
  • Stack :  ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฆฌํ„ด ๊ฐ’ (์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ)

์Šค๋ ˆ๋“œ๋Š” Stack๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ–๊ฒŒ ๋˜๋ฉฐ,  ๋‚˜๋จธ์ง€ ์˜์—ญ์€ ์„œ๋กœ ๊ณต์œ 

์ •๋ฆฌํ•˜์ž๋ฉด, ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ๋งŒ์˜ ๊ณ ์œ  ๊ณต๊ฐ„๊ณผ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ฐ˜ํ•ด, ์Šค๋ ˆ๋“œ๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ Stack์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๋ฅผ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์Œ

 

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค & ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ


 

1. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค  

  • ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์— ์—ฌ๋Ÿฌ CPU๋ฅผ ์žฅ์ฐฉํ•˜๊ฒŒ ๋˜๋ฉด ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•จ
  • OS ์ฐจ์›์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์นจ๋ฒ” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ์•ˆ์ •์ ์ž„ 
  • ๊ฐ๊ฐ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ž์› ๊ณต์œ ๊ฐ€ ๊นŒ๋‹ค๋กœ์šฐ๋ฉฐ, Context Switching์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•จ 
Context Switching
๋™์ž‘ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๋ฉฐ ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ , ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋˜ ๋‹ค์Œ ์ˆœ๋ฒˆ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๋ฉฐ ์ €์žฅ๋˜์—ˆ๋˜ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธ 

 

2. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ

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

 

Reference

https://github.com/gyoogle/tech-interview-for-developer

 

gyoogle/tech-interview-for-developer

๐Ÿ‘ถ๐Ÿป ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ „๊ณต ์ง€์‹ & ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋ฐฑ๊ณผ์‚ฌ์ „ ๐Ÿ“–. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com