๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸง Operating System

[OS / ์šด์˜ ์ฒด์ œ] Process Termination, IPC, Shared Memory Segment, Producer Consumer Problem, Message Passing Systems, System 5

by UKHYUN22 2022. 3. 28.
728x90

์˜ˆ์™ธ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋Š” ์ถ”๊ฐ€ํ•  ๊ฒƒ.

 

More about wait

 

Process Creation in win32

CreateProcess()๋Š” fork์™€ exec๋ฅผ ํ•ฉ์ณ๋†“์€ ํ•จ์ˆ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

WaitForSingleObject()๋Š” wait function๊ณผ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

ZeroMemeory()๋Š” ๋‹ค์Œ์— ์„ค๋ช…

 

Process Termination

exit() ์„ ํ•˜๊ณ  ์ข…๋ฃŒ๋ฅผ ํ•˜๊ฒŒ ๋ ๋•Œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ free ํ•˜๊ณ  ์ข…๋ฃŒํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด free ์•ˆํ•ด๋„ ๋˜๋Š” ๊ฒƒ์ธ๊ฐ€? ์•„๋‹ˆ๋‹ค. ๋ฌด์กฐ๊ฑด free๋กœ deallocate๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ํ˜„์‹ค์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ loop๊ฐ€ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๋น„์Šทํ•œ ๋™์ž‘์„ ๋Œ๋ฆฌ๊ฒŒ ๋˜๋Š”๋ฐ Memory leak๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์กฐ๊ธˆ์”ฉ ๋ฒ„๋ ค์ง€๊ฒŒ ๋œ๋‹ค. ์ฒ˜์Œ ๋™์ž‘ํ•  ๋•Œ๋Š” ์ •์ƒ ๋™์ž‘ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ์ฃฝ๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ ํŒจํ„ด์˜ ๊ฒฝ์šฐ ๋””๋ฒ„๊น…ํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค. ์ฆ์ƒ์„ ํ™•์ธํ•˜๊ธฐ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์— ๋ฉ”๋ชจ๋ฆฌ Leak๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. Task Manager๋ฅผ ๋„์šฐ๋ฉด ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ „์ฒด์ ์œผ๋กœ ์ˆ˜ํ‰์ธ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ํ”„๋กœ๊ทธ๋žจ ํ•˜๋‚˜๋ผ๋„ Leak๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์กฐ๊ธˆ์”ฉ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค. 

 

Multiprocess Architecture Chrome Browser

Browser ๋งˆ๋‹ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , Renderer, Plug-in ์ด๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๋„ ์กด์žฌํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๊ฐœ์ฒด๋“ค์ด๊ณ  ์นจ๋ฒ”ํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•œ๊ฐ€?

 

IPC

๋ชจ๋‘๋‹ค kernel์ด ์ œ๊ณตํ•ด์ฃผ๋Š” ํ†ต์‹ ์„ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค Communication ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์‹์€ Message passing model์ด๋‹ค. ์ด๊ฒƒ์€ real world์˜ ์šฐ์ฒด๊ตญ๊ฐ™์€ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. A๊ฐ€ ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ˆ„๊ตฌํ•œํ…Œ ์ „๋‹ฌํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ์„ ํ•œ๋‹ค. Interrupt ํ˜•์‹์œผ๋กœ ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. B๋Š” ํ•ด๋‹น ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ Interrupt๋ฅผ ํ†ตํ•ด์„œ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฐฉ์‹์€ Shared Memory์ด๋‹ค. malloc์€ ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ์†ํ•˜๊ฒŒ ๋˜์ง€๋งŒ shared memory์˜ ๊ฒฝ์šฐ ๊ฐ™์€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Communicationํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

Shared Memory Segment

๋น ๋ฅด๋‹ค. OSํ•œํ…Œ ํ•ด๋‹น shared memory block์„ ๋งŒ๋“ค์–ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ์„ ํ•ด์•ผ ํ•œ๋‹ค. A์™€ B๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” Bridge ์—ญํ• ์„ ํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” ์†๋„๊ฐ€ ๋‚˜์˜จ๋‹ค. ๋‘ ๋ฒˆ์งธ ์žฅ์ ์€ Memory block์„ ํฌ๊ฒŒ ์žก์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์šฉ๋Ÿ‰์œผ๋กœ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹จ์ ์œผ๋กœ๋Š” ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. Sync๋ฅผ ๋งž์ถฐ์•ผ ํ•˜๊ณ  ๊ทธ ์•ฝ์†์„ ํ”„๋กœ์„ธ์„œ๋ผ๋ฆฌ ํ•ด์•ผ ํ•œ๋‹ค.

 

Producer Consumer Problem

ํ•˜๋‚˜๋Š” Produce๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ์ •๋ณด๋ฅผ ๋งŒ๋“ค์–ด์„œ Shared Memeory์— ์ง‘์–ด ๋„ฃ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  Consumer๋Š” Shared Memory์—์„œ Readํ•ด ๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค. Producer Consumer Problem์˜ ์ •์˜์ƒ Producer๋Š” ์“ฐ๊ธฐ๋งŒ ํ•˜๊ณ  Consumer๋Š” ์ฝ๊ธฐ๋งŒ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ comiler์™€ accessor๊ฐ€ ์žˆ๋‹ค.

 

Producer Consumer Problem

๋จผ์ € Source๋ฅผ Assembly code๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ์ด๋ฅผ ๋‹ค์‹œ Binary code๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ณผ์ •์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ๋‘ ๋ฒˆ์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค. Assembler๊ฐ€ source code๋ฅผ Assembler๋กœ ๋งŒ๋“ค์–ด์„œ Shared Block์— ๋„ฃ์–ด์ฃผ๊ฒŒ ๋˜๊ณ , Assembler๊ฐ€ ๋‹ค์‹œ Binary code๋กœ ๋ฐ”๊ฟ”์ฃผ๊ฒŒ ๋œ๋‹ค..

 

Producer Consumer Problem

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Buffer ํฌ๊ธฐ์— ์ œํ•œ์ด ์žˆ๋‹ค. ๊ทธ๋Ÿผ Producer๊ฐ€ unbounded Buffer์—์„œ๋Š” ๊ณ„์†ํ•  ์ˆ˜ ์žˆ๋‹ค. Buffer์˜ ํฌ๊ธฐ๋Š” ๋์ด ์—†๋‹ค๋Š” ๊ฐ€์ •์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค. ๋ฐ˜๋ฉด Bounded Buffer Problem์—์„œ๋Š” ๋ฌดํ•œํžˆ Buffer๊ฐ€ ๊ฝ‰ ์ฐฐ ๋•Œ๊นŒ์ง€ ์ง„ํ–‰์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋นˆ ๊ณต๊ฐ„์ด ์—†์œผ๋ฉด ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค. ๋นˆ ๊ณต๊ฐ„์€ Consumer๊ฐ€ ๋งŒ๋“ค์–ด์ฃผ๊ฒŒ ๋œ๋‹ค. Consumer์˜ ์ž…์žฅ์—์„œ Shared Memory๊ฐ€ ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ ์ ‘๊ทผํ•˜๋ฉด ์•ˆ๋€๋‹ค. ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š”๋ฐ Producer๊ฐ€ ๋„ฃ์–ด์ค„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.

 

 

Producer-Consumer Problem using Bounded Buffer

Circuler queue๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•œ๋‹ค. in๊ณผ out์ด ๊ฐ™์„ ๋•Œ Buffer๊ฐ€ ๋น„์–ด์žˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

Circular Queue

 

Producer-Consumer Problem using Bounded Buffer

Producer์˜ ๊ฒฝ์šฐ Buffer๊ฐ€ ๊ฝ‰ ์ฐจ์žˆ์œผ๋ฉด ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— while ๋ฌธ์˜ state๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ฒŒ ๋œ๋‹ค. ๊ทธ ์ดํ›„์˜ ์ค„์€ Circuler Queue์— ์กด์žฌํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค. Consumer์˜ ๊ฒฝ์šฐ๋„ ๋ฉˆ์ถ”์ง€ ์•Š๊ธฐ ์œ„ํ•ด while(1)์ด ์กด์žฌํ•˜๊ณ  ๋น„์–ด ์žˆ์œผ๋ฉด ๊ธฐ๋‹ค๋ฆฌ๋ผ๋Š” ๋ฌธ์žฅ์ด ๋ฐ˜๋ณต๋œ๋‹ค. ๋’ค์˜ ๋‘ ๊ฐœ ๋ฌธ์žฅ์€ CirculerQueue์—์„œ Item์„ ๊บผ๋‚ด๊ฒŒ ๋œ๋‹ค. Shared Memory์— ์˜ฌ๋ผ๊ฐˆ ๋ณ€์ˆ˜์™€ ์˜ฌ๋ผ๊ฐ€๋ฉด ์•ˆ ๋  ๋ณ€์ˆ˜์˜ ๊ธฐ์ค€์€ ๋ฌด์—‡์ธ๊ฐ€. Producer์™€ Consumer๊ฐ€ ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ Shared Memory์— ์˜ฌ๋ผ๊ฐ€์•ผ ํ•œ๋‹ค. 

 

Message Passing Systems

์ข‹์€ ์ ์€ ์š”์ฒญ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ. ๋Œ€๋ถ€๋ถ„ kernel์ด ์•Œ์•„์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค. Shared Memory์˜ ๊ฒฝ์šฐ Conflict๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ Conflict๋Š” ์—†๋‹ค. ๋‹จ์ ์€ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์˜ Accesss ์†๋„๋ณด๋‹ค๋Š” ๋Š๋ฆฌ๋‹ค. MEssage Queue์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ œ์•ฝ์ด ์žˆ๋‹ค. ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ์ œ์•ฝ์ด ์กด์žฌํ•œ๋‹ค. ์žฅ์ ์€ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ ๋ณด๋‚ผ ์ˆ˜ ๋„ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. 

 

 

Message Passing System

kernelํ•œํ…Œ ๋ถ€ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ System call ๋ฐฉ์‹์ด๋‹ค. 2 ๊ฐœ์˜ System call์ด ํ•„์š”ํ•˜๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ๋Š” Send()์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋กœ receive() ์ด๋‹ค. ์‹ค์ œ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค. Direct / Indirect, Sync / Async ๋“ฑ๋“ฑ ์กด์žฌํ•œ๋‹ค.

 

Direct / Indirect Communication

๋‚˜๋ž‘ ๋Œ€ํ™”ํ•˜๋Š” ์ƒ๋Œ€๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฐ€. Direct๋Š” ์ง์ ‘ ํ”„๋กœ์„ธ์Šค๋กœ ๋ณด๋‚ด๊ฒŒ ๋˜๊ณ  Indirect๋Š” Mail Box๋กœ ๋ณด๋‚ด๊ณ  ๋˜ ๋ฐ›๊ฒŒ ๋œ๋‹ค. Direct์˜ ๊ฒฝ์šฐ PID๋ฅผ ์•Œ์•„์•ผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ Indirect์˜ ๊ฒฝ์šฐ PID๋ฅผ ์•Œ์ง€ ๋ชปํ•ด๋„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. 

 

System 5

shared memory block์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜์˜ ์ด๋ฆ„์€ shmget์ด๋‹ค. ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Process์•ˆ์ด ์•„๋‹Œ ๊ณตํ†ต ์˜์—ญ์— ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋œ๋‹ค. address๋ฅผ ๋ฆฌํ„ดํ•˜์ง€ ์•Š๊ณ  int ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. Address๋Š” ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋ณ„๋„์˜ ์ฒด๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. shared memory block์„ ์ ‘๊ทผํ•  ๋•Œ๋Š” Address๋ฅผ ๊ฐ€์ง€๊ณ  ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ณ  OS๊ฐ€ unique ํ•œ ๋ฒˆํ˜ธ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค. shmget์˜ ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” size์ด๊ณ  ์ด์— ํ•ด๋‹นํ•˜๋Š” ํฌ๊ธฐ๋งŒํผ Shared Block์„ ๋งŒ๋“ ๋‹ค. shmat ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ mapping ๊ด€๊ณ„๋ฅผ ๋งŒ๋“ค์–ด์„œ Process ๋‚ด๋ถ€์˜ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ์จ ๋˜‘๊ฐ™์ด ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ์ค€๋‹ค. shmat์˜ ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ Shared Memory์˜ Return ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ๊ทธ ๊ฐ’์ด shmat์˜ ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ์ฃผ๊ฒŒ ๋œ๋‹ค. malloc์ด๋ž‘ ๋™์ผํ•˜๋‹ค. 

 

System 5

๋‘ ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ shmget์€ ํ˜ธ์ถœํ•˜๋ฉด ์•ˆ๋€๋‹ค. shmget์„ ํ˜ธ์ถœํ•˜๊ณ  fork๋ฅผ ํ•˜๋ฉด ํ•ด๋‹น seg_id๋ฅผ child process๋„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. shared memory๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ structure์™€ ํ™”์‚ดํ‘œ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

shmdt(), mapping์„ ๋Š์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. deallocation์€ ๋‹ค์‹œ ํ•ด์ค˜์•ผ ํ•œ๋‹ค

 

Shared Memory

shmctl() ์€ deallocation์„ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. attatch ํ•  ๋•Œ๋งˆ๋‹ค increase ํ•ด์ฃผ๊ณ  detach ํ•  ๋•Œ๋งˆ๋‹ค decreaseํ•ด์ฃผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. attach ํ•˜๊ณ  ์žˆ๋Š” ๋™์•ˆ์—๋Š” ๋งˆ์Œ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. 

 

 

Reading Assignment ๊ณผ์ œ

 

POSIX Shared Memory

Memory-mapped file์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•œ๋‹ค. POSIX์˜ shared memory๋Š” file์„ ํ†ตํ•ด์„œ ์ด๋ฃจ์–ด์ง„๋‹ค. shm_open์œผ๋กœ ์—ด๋•Œ์™€ open์„ ์—ด๋•Œ์˜ ์ฐจ์ด์ . open์€ ์ผ๋ฐ˜ ํŒŒ์ผ์„ ์—ฌ๋Š” ๊ฒƒ์ด๊ณ  shm_open์€ ๊ฐœ๋…์ ์œผ๋กœ file์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ์—ฌ๋Š” ๊ฒƒ์ด๊ณ , Access๋ฅผ ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ์†๋„๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ. ๊ทธ๋ฆฌ๊ณ  ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“  ํŒŒ์ผ์ด๋ผ๋Š” ์ ์ด open๊ณผ ๋‹ค๋ฅธ ์ ์ด ๋œ๋‹ค. 

ftruncate() ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ง€์ •ํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

mmap() ์˜ ๊ฒฝ์šฐ ๋ฆฌํ„ด ํƒ€์ž…์€ ์ฃผ์†Œ๊ฐ€ ๋œ๋‹ค. ์ฃผ์†Œ๊ฐ€ ๋ฆฌํ„ด ๊ฐ’์ด๋ฉด ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹ฌ.

shm_unlink() ํ•จ์ˆ˜๋Š” shm_open์„ ๋งŒ๋“  ๊ฒƒ์„ ์—†์• ์ฃผ๋Š” ํ•จ์ˆ˜.