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 ๋ฑ์ ๊ณต์ ๋ฆฌ์์ค์ ๋ํ ๊ฒฝ์์ ์๋ฏธํฉ๋๋ค.
์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ๊ณต์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ฐ์ํฉ๋๋ค.
Resource Isolations
์๋๋ก์ด๋๋ ๋ฆฌ์์ค๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฑ ๊ฐ์ ์ํธ์์ฉ์ ์ ํํ๊ณ , ์์ ์ฑ๊ณผ ๋ณด์์ ๋์
๋๋ค.
Resource Isolations์ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ ๋ฑ ์์คํ
์์์ด ์ฌ๋ฌ ์ฑ ๊ฐ์ ๋
๋ฆฝ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋๋ก ๋ถ๋ฆฌํ๋ ๊ธฐ์ ์
๋๋ค.
์ฃผ์ ๋ฉ์ปค๋์ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
CPU์ ๋ฉ๋ชจ๋ฆฌ
- ๊ฐ ์ฑ์ ๊ณ ์ ํ ํ๋ก์ธ์ค ๊ณต๊ฐ์์ ์คํ๋จ
- ํ๋์ ์ฑ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํด๋, ๋ค๋ฅธ ์ฑ์ด๋ ์์คํ ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก OOM Killer๊ฐ ๋์
๋คํธ์ํฌ ๋ฆฌ์์ค
- ๊ฐ ์ฑ์ ๋คํธ์ํฌ ๋ฆฌ์์ค์ ๋ ๋ฆฝ์ ์ผ๋ก ์ ๊ทผํ๋ฉฐ, ACCESS_NETWORK_STATE์ ๊ฐ์ ๊ถํ์ ํตํด ์ ์ด๋จ
ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ
- ์ฑ ๊ฐ ํ์ผ ์ ๊ทผ์ ์์ ์ค๋ช ํ ํ์ผ ๊ถํ ์ฒด๊ณ๋ฅผ ํตํด ์ ์ด๋จ
Resource Contention ๋ฐฉ์ง
- ์๋๋ก์ด๋๋ ์ฑ์ ์ฐ์ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๋ฐฐ๋ถํ์ฌ ์ค์ํ ํ๋ก์ธ์ค(์: UI)๋ฅผ ์ฐ์ ์ผ๋ก ๋ณดํธ
Process Management
์๋๋ก์ด๋๋ Linux ์ปค๋์ ํ๋ก์ธ์ค ๊ด๋ฆฌ ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ์ด๋ฅผ ์ฑ ์ค์ฌ์ ํ๋ก์ธ์ค ๊ด๋ฆฌ๋ก ํ์ฅํ์ต๋๋ค.
๊ฐ ์ฑ์ ๋ ๋ฆฝ๋ ํ๋ก์ธ์ค์์ ์คํ๋ฉ๋๋ค. ์ฑ์ด ์ฒ์ ์คํ๋ ๋, ์์คํ ์ ๊ทธ ์ฑ์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ณ ์ฑ์ด ์ข ๋ฃ๋๊ฑฐ๋ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ๋ฉด ํด๋น ํ๋ก์ธ์ค๋ฅผ ์ ๋ฆฌํ๊ฑฐ๋ ์ฌํ์ฉํฉ๋๋ค.
์๋๋ก์ด๋๋ ์ฑ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Foreground Process : ํ๋ฉด์ ํ์ ์ค์ธ ํ๋
- Visible Process : UI์ ๋ณด์ด์ง๋ ์์ง๋ง, ์ฌ์ฉ์์ ๊ด๋ จ ์๋ ํ๋ก์ธ์ค
- Service Process : ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ ์ค์ธ ์๋น์ค
- Background Process : UI์ ๊ด๋ จ ์๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
- Empty Process : ๋ฆฌ์์ค ์ต์ ํ๋ฅผ ์ํด ํ๋ก์ธ์ค๋ง ์ ์ง
์๋๋ก์ด๋ ๊ฐ๋ฐ์ ๋ก๋๋งต์ ๋ฐ๋ผ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
'๐ป Programming > Android Developer AtoZ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android] App Components (3) - Service ์๋ฒฝ ๊ฐ์ด๋ (1) | 2025.03.19 |
---|---|
[Android] App Components (2) - Activity ์๋ฒฝ ๊ฐ์ด๋ (1) | 2025.03.05 |
[Android] App Components (1) - ์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ (0) | 2025.02.28 |
[Android] Operating System (2) - GC์ OOM Killer (1) | 2025.02.22 |
[Android] APK์ AAB (1) | 2025.02.20 |