๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Programming/Android Developer AtoZ

[Android] Operating System (1) - File Permission, Multi-User Linux, Resource Isolations, Process Management

by ๊ธฐ๋ฌด์ • 2025. 2. 21.
728x90

 

 

 

File Permission

Linux์˜ ํŒŒ์ผ ๊ถŒํ•œ ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์†Œ์œ ์ž, ๊ทธ๋ฃน, ๊ธฐํƒ€ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์ฝ๊ธฐ(r), ์“ฐ๊ธฐ(w), ์‹คํ–‰(x) ๊ถŒํ•œ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.


๊ฐ ๊ถŒํ•œ ์ฒด๊ณ„๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์†Œ์œ ์ž(owner) : ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž(์•ฑ)์ด๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ€์ง
  • ๊ทธ๋ฃน(group) : UID๊ฐ€ ๊ฐ™์€ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน ๋‚ด ๊ถŒํ•œ. (์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์—์„œ๋Š” ์ฃผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)
  • ๊ธฐํƒ€ ์‚ฌ์šฉ์ž(others) : ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน ์™ธ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž์ด๋‹ค.
  • ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์˜ ํŒŒ์ผ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ '660(rw- rw- ---)' ํ˜น์€ '600(rw- --- ---)' ๊ถŒํ•œ์„ ๊ฐ€์ง

๊ฐ ์•ฑ์˜ ๋ฐ์ดํ„ฐ๋Š” '/data/data/<package>/' ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์•ฑ์ด ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋ช…์‹œ์ ์ธ ๊ถŒํ•œ(ContentProvider) ๋˜๋Š” Root ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์•ฑ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋„ ContentProvider ๋˜๋Š” FileProvider๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

Multi-User Linux

ํ•˜๋‚˜์˜ Linux ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋ฅผ ๋™์‹œ์— ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

๊ฐ ์‚ฌ์šฉ์ž๋Š” ๊ณ ์œ ํ•œ UID๋ฅผ ๊ฐ€์ง€๋ฉฐ, UID๋Š” ์‹œ์Šคํ…œ์— ์„œ ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ, ํ”„๋กœ์„ธ์Šค, ๋„คํŠธ์›Œํฌ ์ž์› ๋“ฑ์„ ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ๋“ฑ ๋ชจ๋“  ์ž์›์€ ํŠน์ • ์‚ฌ์šฉ์ž์™€ ์—ฐ๊ฒฐ๋˜๋ฉฐ ์‚ฌ์šฉ์ž ๊ฐ„์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž์›์ด ๊ณต์œ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์•ˆ๋“œ๋กœ์ด๋“œ๋Š” Linux์˜ Multi-User ๊ตฌ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€, ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

UID์™€ ์•ฑ ๊ฒฉ๋ฆฌ

  • ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ๊ฐ ์•ฑ์„ ํ•˜๋‚˜์˜ ์‚ฌ์šฉ์ž๋กœ ๊ฐ„์ฃผ
  • ์„ค์น˜๋œ ์•ฑ์€ ๊ณ ์œ ํ•œ UID๋ฅผ ๋ถ€์—ฌ ๋ฐ›์•„, ๋‹ค๋ฅธ ์•ฑ๊ณผ ๊ฒฉ๋ฆฌ๋จ
  • ์˜ˆ) 'com.example.app1'๊ณผ 'com.example.app2'๋Š” ์„œ๋กœ ๋‹ค๋ฅธ UID๋ฅผ ๊ฐ–๋Š”๋‹ค. 'app1'์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 'app2'์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉ์ž ํ”„๋กœํ•„

  • ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์„ ์ง€์›
  • ๋””๋ฐ”์ด์Šค์—์„œ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž ํ”„๋กœํ•„์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ฐ ์‚ฌ์šฉ์ž ํ”„๋กœํ•„์€ ๋…๋ฆฝ์ ์ธ ์•ฑ, ๋ฐ์ดํ„ฐ, ์„ค์ •์„ ์œ ์ง€
  • ๋””๋ฐ”์ด์Šค ์†Œ์œ ์ž๋Š” ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ

ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์˜ ๋ถ„๋ฆฌ

  • ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” '/data/data/<ํŒจํ‚ค์ง€๋ช…>' ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ์•ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
  • ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์•ฑ์˜ UID๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์ œ์–ด๋จ (File Permission ๋‚ด์šฉ ์ฐธ๊ณ )
  • UID๊ฐ€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ, ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ

ํ”„๋กœ์„ธ์Šค ์ˆ˜์ค€ ๊ฒฉ๋ฆฌ

  • ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๊ฐ ์•ฑ์€ ๋…๋ฆฝ๋œ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋จ
  • ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด ๋ช…์‹œ์ ์œผ๋กœ IPC๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
  • ์ด๋กœ ์ธํ•ด ์•ฑ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Œ
๐Ÿ’กIPC๋ž€?
Inter Process Communication์˜ ์•ฝ์ž๋กœ, ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ ํ†ต์‹  ๋ฐฉ์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๋Œ€ํ‘œ์ ์œผ๋กœ PIPE, Message Queue, Shared Memory, Semaphore, Socket ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

Multi-User์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์•ฑ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์–ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์•ฑ ํ•˜๋‚˜๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ์•ฑ์ด๋‚˜ ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.
  • UID ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฉ๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฆฌ์†Œ์Šค์—๋งŒ ์ ‘๊ทผํ•˜๋ฏ€๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฆฌ์†Œ์Šค ๊ฒฝํ•ฉ(Resource Contention)์„ ์ค„์ด๊ณ , ์ „์ฒด ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ’กResource Contention์ด๋ž€?
์†Œํ”„ํŠธ์›จ์–ด ์‹คํ–‰ ์‹œ CPU, ๋ฉ”๋ชจ๋ฆฌ, I/O ๋“ฑ์˜ ๊ณต์œ  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฒฝ์Ÿ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ๊ณต์œ  ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

728x90

 


 

Resource Isolations

์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์•ฑ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ œํ•œํ•˜๊ณ , ์•ˆ์ •์„ฑ๊ณผ ๋ณด์•ˆ์„ ๋†’์ž…๋‹ˆ๋‹ค.
Resource Isolations์€ CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋„คํŠธ์›Œํฌ ๋“ฑ ์‹œ์Šคํ…œ ์ž์›์ด ์—ฌ๋Ÿฌ ์•ฑ ๊ฐ„์— ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ๋ถ„๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

CPU์™€ ๋ฉ”๋ชจ๋ฆฌ

  • ๊ฐ ์•ฑ์€ ๊ณ ์œ ํ•œ ํ”„๋กœ์„ธ์Šค ๊ณต๊ฐ„์—์„œ ์‹คํ–‰๋จ
  • ํ•˜๋‚˜์˜ ์•ฑ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋„, ๋‹ค๋ฅธ ์•ฑ์ด๋‚˜ ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋„๋ก OOM Killer๊ฐ€ ๋™์ž‘

๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค

  • ๊ฐ ์•ฑ์€ ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค์— ๋…๋ฆฝ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉฐ, ACCESS_NETWORK_STATE์™€ ๊ฐ™์€ ๊ถŒํ•œ์„ ํ†ตํ•ด ์ œ์–ด๋จ

ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ

  • ์•ฑ ๊ฐ„ ํŒŒ์ผ ์ ‘๊ทผ์€ ์•ž์„œ ์„ค๋ช…ํ•œ ํŒŒ์ผ ๊ถŒํ•œ ์ฒด๊ณ„๋ฅผ ํ†ตํ•ด ์ œ์–ด๋จ

Resource Contention ๋ฐฉ์ง€

  • ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์•ฑ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฐ๋ถ„ํ•˜์—ฌ ์ค‘์š”ํ•œ ํ”„๋กœ์„ธ์Šค(์˜ˆ: UI)๋ฅผ ์šฐ์„ ์œผ๋กœ ๋ณดํ˜ธ

 


 

Process Management

์•ˆ๋“œ๋กœ์ด๋“œ๋Š” Linux ์ปค๋„์˜ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ ์•ฑ ์ค‘์‹ฌ์˜ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ๋กœ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

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

 

์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์•ฑ ํ”„๋กœ์„ธ์Šค์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„  ์ˆœ์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. Foreground Process : ํ™”๋ฉด์— ํ‘œ์‹œ ์ค‘์ธ ํ™œ๋™
  2. Visible Process : UI์— ๋ณด์ด์ง€๋Š” ์•Š์ง€๋งŒ, ์‚ฌ์šฉ์ž์™€ ๊ด€๋ จ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค
  3. Service Process : ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘์—… ์ค‘์ธ ์„œ๋น„์Šค
  4. Background Process : UI์™€ ๊ด€๋ จ ์—†๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…
  5. Empty Process : ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋งŒ ์œ ์ง€

 


 

์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ๋กœ๋“œ๋งต์„ ๋”ฐ๋ผ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

 

 

728x90