Jastes 2022. 8. 10. 13:17

keyword : Shared Memory


level10-WriteUp

Shared Memory
๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ž€ ์—ฌ๋Ÿฌ ์žฅ์น˜(์ฃผ๋กœ CPU)๋‚˜ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ
Ex) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ..
 

[ CS / OS ] ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ (Shared Memory)

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ž€ ์—ฌ๋Ÿฌ ์žฅ์น˜(์ฃผ๋กœ CPU)๋‚˜ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ์ž์˜ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๊ณต์œ 

velog.io

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค๋ผ.. ๊ทธ๋Ÿผ ๋จผ์ € ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์„ค์ •๊ณผ ๊ธฐ๋Šฅ ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋”ฉ์— ๋Œ€ํ•˜์—ฌ
์•Œ์•„๋ณด๊ธฐ ์ „์— ์ถ”๊ฐ€์ ์œผ๋กœ ์ •๋ณด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค

์ผ๋‹จ ./program์ด๋ผ๋Š” ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ธฐ์— ํ™•์ธ์„ ํ•ด๋ณด๋‹ˆ๊นŒ ๊ถŒํ•œ์ด ์—†๋‹ค.. ์ฆ‰, root ๊ถŒํ•œ์—์„œ
์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋กœ์จ ์ € ๋‘˜์ด ๋‚˜๋ˆˆ ๋‚ด์šฉ์˜ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์ •๋ณด์ธ๋“ฏ ์‹ถ๋„ค์š”

๊ทธ๋Ÿฌ๋ฉด ์‹คํ–‰ํŒŒ์ผ๋กœ์จ ์‹คํ–‰๋˜๋Š” SetUID๊ฑฐ๋‚˜ ํ˜„์žฌ ๊ถŒํ•œ์˜ ํŒŒ์ผ์—์„œ ์˜์‹ฌ๋˜๋Š” ํŒŒ์ผ๋กœ์จ ์กด์žฌ,
์•„๋‹ˆ๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰๋˜๋Š” ํŒŒ์ผ์ด๋ผ๋Š” ๊ฑฐ๊ธฐ์— ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ด…์‹œ๋‹ค

๊ทธ๋ฆฌ๊ณ  SetUID๋„ ํ™•์ธ๋„ ํ•˜๊ณ , level10์— ์žˆ๋Š” ์ •๋ณด๋„ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

๋ญ ๋”ฑํžˆ ์˜์‹ฌ๋˜๋Š” ํŒŒ์ผ๋„ ์—†๊ณ , SetUID๋„ ๊ฑธ๋ ค์žˆ๋Š”๊ฒƒ๋„ ์—†๋„ค์š”
์‚ฌ์‹ค level10์— ๋ญ ๋‚˜์˜ฌ์ง€ ์•Œ์•˜๋Š”๋ฐ ์ €๋ ‡๊ฒŒ ๋‚˜์˜ฌ์ค„์€;; ์จ‹๋“  ์ €๋ ‡๊ฒŒ ๋‚˜์˜จ๊ฑด
๋ญ.. backdoor๋Š” ์•„๋‹Œ๊ฑฐ ๊ฐ™๊ณ , ๋ญ ํŠนํžˆ์‚ฌํ•ญ๋„ ์—†์œผ๋‹ˆ๊นŒ ๋„˜์–ด๊ฐ€์ฃ 

 

/etc/rc.d/rc.sysinit, /etc/rc.d/rc

-------------------------------------------------------------------- #!/bin/bash # # rc This file is responsible for starting/stopping # services when the runlevel changes. It is also # responsible for the very first setup of basic # things, such as settin

wiki.kldp.org

๋ฐ‘์— ์ฐธ๊ณ  ์ž๋ฃŒ์— ์œ„์™€ ๋น„์Šทํ•œ ๋งํฌ๊ฐ€ ํ•œ.. 3๊ฐœ ์˜ฌ๋ ธ๋‚˜? ๊ทธ๊ฒƒ๋“ค์„ ๊ตฌ๊ธ€๋งํ•ด์„œ ์ฐพ์€ ๊ฒฐ๊ณผ!
background excute program๋“ค์ด ์ƒ์ฃผํ•˜๋Š” ๊ณณ์ด ๋ฐ”๋กœ(๋‹น์—ฐํžˆ ์‹œ์Šคํ…œ ๊ด€๋ จ ํŒŒ์ผ์— ์žˆ๊ฒ ์ฃ ?)
/etc/rc.d(์ด๊ฑด ๋ฒ„์ „๊ณผ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด์ง€๋˜๋ฐ ์ด ๋ฒ„์ „์ด ๊ฐ€์žฅ ๊ทผ๋ณธ)์œผ๋กœ ์ ‘๊ทผํ•˜์‹œ๋ฉด..

๊ทผ๋ฐ ํ•˜๋ฉด์„œ ๋Š๋ผ๋Š”๊ฑด๋ฐ ์ง„์งœ ์—ฌ๊ธฐ ์ƒ‰๊น” ๋•œ์— ๊ฐ€๋…์„ฑ์ด ๋“œ๋Ÿฝ๋„ค์š”..
์˜ค.. level8์งœ๋ฆฌ๋„ ์„œ๋ฒ„ ๊ด€๋ จ ๋ฌธ์ œ์˜€๋Š”๋ฐ ์„œ๋ฒ„๋Š” ์•ต๊ฐ„ํ•ด์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ ์œ„์น˜ ํŒŒ์ผ์— ์ƒ์ฃผํ•˜๋‚˜๋ณด๋„ค์š”?
๊ทธ๋Ÿฌ๋ฉด ์ผ๋ฐ˜ ํŒŒ์ผ(์ดˆ๋ก์ƒ‰)์—์„œ rc์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์ „์—..

rc(rc ํŒŒ์ผ์˜ ์„ค์ •๊ฐ™์Œ), rc.local(์—ฌ๊ธฐ ๋‚ด๋ถ€์˜ ์„ค์ •ํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํŒŒ์ผ),sysinit(์‹œ์Šคํ…œ ์ดˆ๊ธฐํ™”?) ๋Š๋‚Œ์ด๋‹ˆ๊นŒ
rc.local๋กœ ์ ‘๊ทผํ•ด์•ผ๊ฒ ์ฃ 

level10์˜ ํŒŒ์ผ์ด ์—ฌ๊ธฐ์— ์กด์žฌํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ๋„ค์š”
๊ทธ๋Ÿผ ์ €ํฌ๋Š” ์—ด๋žŒํ•  ๊ถŒํ•œ์ด ์—†์œผ๋‹ˆ๊นŒ ์ง์ ‘ ์ฝ”๋”ฉํ•ด์„œ ๋”ฐ๋ด์•ผ๊ฒ ์ฃ ?

์ฐธ๊ณ ๋กœ level10์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด.. ์•„๋ฌด๊ฒƒ๋„ ์—†๋”๋ผ๊ณ ์š”
์Œ.. ๋‹จ์ˆœํžˆ ํ”„๋กœ์„ธ์Šค๋กœ๋งŒ ์žˆ๋„ค์š”

์•Œ๋“ค์‹ ์žก(Process์™€ Daemon์˜ ์ฐจ์ด์ )
Process
- ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ƒํƒœ์‹คํ–‰ ๋ฐ ์ข…๋ฃŒ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ˆ˜ํ–‰
Ex) cat, vi, ps, grep etc...
 
Daemon
- ํ•ญ์ƒ ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค
- ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ œ์–ดํ•˜์ง€ ์•Š๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ˆ˜ํ–‰
- ์ฃผ๋กœ, ์‹œ์Šคํ…œ ์Šคํƒ€ํŠธ์—… ์‹œ ์ž๋™์œผ๋กœ ๊ธฐ๋™๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง€์นญ
Ex) inetd, syslogd, crond, httpd etc...

Exploit Code

์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ ์ „์— ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€ํ•œ C ์ฝ”๋“œ ์ž‘์„ฑ์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ด…์‹œ๋‹ค.

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ด€ํ•œ ํ•จ์ˆ˜๋“ค

์‚ฌ์šฉํ•œ ๋ชจ๋“ˆ๋กœ์จ๋Š” <sys/shm.h>์™€ <sys/types.h>๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผํ•ด์š”
๊ทผ๋ฐ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋„ ์žˆ์–ด์„œ <sys/ipc.h>๋„ ๋ถˆ๋Ÿฌ์ฃผ์„ธ์š”

์™ธ์šฐ๊ธฐ ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด shm(shared memory ์•ฝ์–ด), types(ํƒ€์ž…๋“ค์˜ lib - ์—†์–ด๋„ ๋ฌด๋ฐฉํ•œ ๋“ฏ),
ipc(ํ”„๋กœ์„ธ์Šค ํ†ต์‹  ์•ฝ์–ด; Inter-Process Communication)

  • int shmget(key_t key, int size, int shmflg) : ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์ƒ์„ฑ(์‚ฌ์šฉ)
    • key_t key : ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ๋ณ„ key๊ฐ’
    • int size : ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ๊ฒฐ์ •
    • int shmflg : ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜ต์…˜ ์ถ”๊ฐ€
      - IPC_CREATE : ๊ถŒํ•œ 0666์„ ์„ค์ •(์ฒซ๋ฒˆ์งธ ์ธ์ˆ˜ key์— ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์—†์œผ๋ฉด ์ƒ์„ฑํ•จ)
      - IPC_EXCL(์˜ˆ์™ธ) : ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด ์‹คํŒจ๋กœ ๋ฐ˜ํ™˜ ์ ‘๊ทผ X
  • void shmat(int shmid, const void *shmaddr, int shmflg) : ํ”„๋กœ์„ธ์Šค์— ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ ์„ธ๊ทธ๋จผํŠธ ์‚ฝ์ž…
    • int shmid : shmget ํ•จ์ˆ˜์— ์˜ํ•ด ๋ฐ˜ํ™˜๋œ intํ˜•์˜ ์‹๋ณ„์ž
    • const void *shmaddr : ์ผ๋ฐ˜์ ์œผ๋กœ NULL ์ง€์ •(์ปค๋„์— ๋งคํ•‘ X ๊ณณ์„ ์ž๋™์œผ๋กœ ์ฐพ์•„ ๋ถ™์—ฌ์คŒ)
    • int shmflg : ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜ต์…˜ ์ถ”๊ฐ€
      - SHM_RDONLY : ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ธฐ์ „์šฉ์œผ๋กœ ์„ค์ •
      - SHM_RND : shmaddr์ด NULL์ด ์•„๋‹๊ฒฝ์šฐ๋งŒ ์‚ฌ์šฉ/shmaddr์„ ๋ฐ˜์˜ฌ๋ฆผํ•ด ๋ฉ”๋ชจ๋ฆฌ๊ฒฝ๊ณ„์— ๋งž์ถค
 

[C/C++]๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ ํ•จ์ˆ˜ shmget(),shmat(),shmdt(),shmctl()

ํ•ด์ปค์Šค์ฟจ์˜ ftz ์›Œ๊ฒŒ์ž„์„ ํ’€๋˜์ค‘ ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ด€ํ•œ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ๋‹ค.. ์ฒ˜์Œ๋ดค์„๋•Œ๋Š” ์ด๊ฒŒ๋ญ์ง€... ํ•˜๋‹ค๊ฐ€ ํ‚ค์›Œ๋“œ ์ค‘์‹ฌ์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋”๋‹ˆ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋“ค์ด ์žˆ์—ˆ๋‹ค. ๋„˜

noirstar.tistory.com

 

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ๋ณดํ†ต ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜์—ญ์€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋งŒ์ด์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋•Œ๋•Œ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ์˜์—ญ์„ ์‚ฌ์šฉํ–ˆ์œผ๋ฉด ํ•˜๋Š”๋•Œ๊ฐ€ ์žˆ์„๊ฒƒ์ด๋‹ค. Syste

www.joinc.co.kr


์ด์ œ ๋Œ€์ถฉ ํ•„์š”ํ•œ ์ •๋ณด์— ๋Œ€ํ•˜์—ฌ ์•Œ์•˜์œผ๋‹ˆ๊นŒ ์ฝ”๋”ฉ์„ ํ•ด๋ด…์‹œ๋‹ค.
์ฐธ๊ณ ๋กœ ๋ฐ”๋กœ level10์—์„œ ์ฝ”๋”ฉํ•˜๊ณ  ์ €์žฅํ• ๋ ค๋‹ˆ๊นŒ ์•ˆ๋˜์„œ ๋งŽ์ด ์งœ์ฏฉ๋‚ฌ๋Š”๋ฐ.. ์™œ ๊ทธ๋Ÿฐ ์˜ค๋ฅ˜์ธ์ง€๋Š” ๋ชจ๋ฅด์ง€๋งŒ..
tmp ์ชฝ ํŒŒ์ผ์— ์ฝ”๋”ฉํ•˜๋ฉด ๋  ๊ฑฐ ๊ฐ™๋„ค์š”(์งœํ”ผ tmp๋ฉด ์ž„์‹œ ํŒŒ์ผ ์ €์žฅํ•˜๋Š” ๊ณณ์ด๋‹ˆ๊นŒ..)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//vi exploit.c
//gcc -o exploit exploit.c
 
#include <stdio.h>
#include <stdlib.h> 
#include <sys/shm.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <unistd.h>
#include <string.h>
 
int main(int *argc, char **argv[]){
        int shm_id;
        void *shm_value;
        char flag[50];
 
        shm_id = shmget(75301000);
        shm_value = shmat(shm_id, NULL0);
        strcpy(flag, shm_value);
        print("%s", flag);
}
cs

level11 : what!@#$?


์ฐธ๊ณ  ์ž๋ฃŒ

 

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ๋ณดํ†ต ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜์—ญ์€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋งŒ์ด์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋•Œ๋•Œ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ์˜์—ญ์„ ์‚ฌ์šฉํ–ˆ์œผ๋ฉด ํ•˜๋Š”๋•Œ๊ฐ€ ์žˆ์„๊ฒƒ์ด๋‹ค. Syste

www.joinc.co.kr

 

Shared Memory ์ •๋ฆฌ ๋ฐ ์˜ˆ์ œ

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋Š” IPC(Inter-Process Communication)์˜ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ตํ•œ ํ†ต์‹ ์€ ๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณตํ†ต ๋ฉ”๋ชจ๋ฆฌ์— ์•ก์„ธ์Šค

coding-chobo.tistory.com

๋”๋ณด๊ธฐ

 

 

๋ฆฌ๋ˆ…์Šค์—์„œ ํŠน์ •๋ช…๋ น์–ด ๋˜๋Š” ์„œ๋น„์Šค ์ž๋™์‹œ์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฆฌ๋ˆ…์Šค์—์„œ ํŠน์ •๋ช…๋ น์–ด ๋˜๋Š” ์„œ๋น„์Šค ์ž๋™์‹œ์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ• /etc/rc.d/rc.local ์— ํ•ด๋‹น ์‹คํ–‰ ๋ช…๋ น์–ด๋‚˜ ์Šคํฌ๋ฆฝํŠธ ๋“ฑ๋ก /etc/rc.d/rc3.d ๊ฐ™์€ ๋Ÿฐ๋ ˆ๋ฒจ ํŒŒ์ผ์— ๋ฐ”๋กœ ๋“ฑ๋ก ๋“ฑ๋ก ๋ฐฉ๋ฒ•์€ ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. 1

blog.thundermail.co.kr

 

 

/Etc/Rc.D/Rc๊ณผ /Etc/Rc.D/Init.D์˜ ๊ด€๊ณ„๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. - MofunIT

์•ž์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด /etc/rc.d/init.d ๋””๋ ‰ํ† ๋ฆฌ์˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์‹œ์Šคํ…œ์ด ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰๋˜๋Š” windows์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์€์ด ์‹œ์ ๊นŒ์ง€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค (init ํ”„๋กœ์„ธ์Šค ์ฝ๊ธฐ ๋ ˆ๋ฒจ), ๋ชจ๋“ 

ko.n4zc.com

 

 

/etc/rc.d/rc.sysinit, /etc/rc.d/rc

-------------------------------------------------------------------- #!/bin/bash # # rc This file is responsible for starting/stopping # services when the runlevel changes. It is also # responsible for the very first setup of basic # things, such as settin

wiki.kldp.org

 

 

[ CS / OS ] ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ (Shared Memory)

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ž€ ์—ฌ๋Ÿฌ ์žฅ์น˜(์ฃผ๋กœ CPU)๋‚˜ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ์ž์˜ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๊ณต์œ 

velog.io

 

 

[C/C++]๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ ํ•จ์ˆ˜ shmget(),shmat(),shmdt(),shmctl()

ํ•ด์ปค์Šค์ฟจ์˜ ftz ์›Œ๊ฒŒ์ž„์„ ํ’€๋˜์ค‘ ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ด€ํ•œ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ๋‹ค.. ์ฒ˜์Œ๋ดค์„๋•Œ๋Š” ์ด๊ฒŒ๋ญ์ง€... ํ•˜๋‹ค๊ฐ€ ํ‚ค์›Œ๋“œ ์ค‘์‹ฌ์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋”๋‹ˆ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋“ค์ด ์žˆ์—ˆ๋‹ค. ๋„˜

noirstar.tistory.com

 

์ฐธ๊ณ  ์ด๋ฏธ์ง€