μ£Όμμ©μ΄
- ν : νμͺ½μμλ μ½μ μ΄ λ°μνκ³ λ€λ₯Έ νμͺ½μμλ μμ κ° λ°μνλλ‘ μ μλμμΌλ©°, λ¨Όμ μ½μ λ μμκ° λ¨Όμ μμ λλ―λ‘ μ μ μ μΆ(First-In-First-Out: FIFO) λλ μ μ°©μ μλΈ(First-Come-First-Serve: FCFS) μκ³ λ¦¬μ¦μ κ°λ μμ 리μ€νΈ
- νμ μ(front) : μμμ μμ μ°μ°μ΄ μ΄λ£¨μ΄μ§λ κ³³
- νμ λ€(rear) : μμμ μ½μ μ°μ°μ΄ μ΄λ£¨μ΄μ§λ κ³³
- FCFS(First-Come First-Served) μ€μΌμ€λ§(λλ FIFO μ€μΌμ€λ§) : μμ (νλ‘κ·Έλ¨)μ΄ μ€λΉ νμ λμ°©ν μμλλ‘ CPUλ₯Ό ν λΉλ°λλ‘ ν΄ μ£Όλ κΈ°λ²
- RR(Round Robin) μ€μΌμ€λ§ κΈ°λ² : μμ μ΄ λμ°©ν μμλλ‘ CPUκ° ν λΉλμ§λ§, CPUμ μκ° ν λΉλ λλ μκ° κ°κ²©μ μν΄ μ νμ λ°μΌλ©°, μΌμ ν ν¬κΈ°μ μκ° ν λΉλμ λͺ¨λ μμ μκ² μ£Όκ³ κ·Έ μκ°λμ μμ μ΄ μλ£λμ§ λͺ»νλ©΄ μ€λΉ νμ 맨 λ€μ λ€μ λ°°μΉλλ κΈ°λ²
- μν ν : νμ΄νμ μ ꡬμ μΆκ΅¬ λΆλΆμ μ°κ²°μν¨ ννμ΄λ©°, νμ μ λμ μ°κ²°μμΌμ μμΌλ‘ λ§λ ννμ ν
νμ μλ―Έ
- νμͺ½μμλ μ½μ μ°μ°λ§ λ°μ κ°λ₯νκ³ , λ€λ₯Έ νμͺ½μμλ μμ μ°μ°λ§ λ°μ κ°λ₯ν μμͺ½μ΄ λͺ¨λ ν°μ§ κ΄
- νμͺ½μμλ μ½μ μ°μ°: μλΉμ€λ₯Ό λ°κΈ° μν κΈ°λ€λ¦Ό
- λ€λ₯Έ νμͺ½μμλ μμ μ°μ°: μλΉμ€λ₯Ό λ°λ μ€
νμ μ½μ μ°μ°
- μ½μ μ°μ°μ΄ λ°μνλ©΄ rear λ³μλ§ μ€λ₯Έμͺ½μΌλ‘ μ΄λνκ³ , μμ μ°μ°μ΄ λ°μνλ©΄ front λ³μλ§ μ€λ₯Έμͺ½μΌλ‘ μ΄λν¨
μννμ μ΄κΈ° μν
- λ°°μ΄μ λ©λͺ¨λ¦¬κ° λλΉλλ λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄ μννκ° μ μλ¨
- μν νλ νμ΄νμ μ ꡬμ μΆκ΅¬ λΆλΆμ μ°κ²°μν¨ νν
μ 리νκΈ°
- νλ νμͺ½μμλ μ½μ μ΄ λ°μνκ³ λ€λ₯Έ νμͺ½μμλ μμ κ° λ°μνλλ‘ μ μλμμΌλ©°, λ¨Όμ μ½μ λ μμκ° λ¨Όμ μμ λλ―λ‘ μ μ μ μΆ(First-In-First-Out : FIFO) λλ μ μ°©μ μλΈ(First-Come-First-Serve : FCFS) μκ³ λ¦¬μ¦μ κ°λ μμ 리μ€νΈλΌκ³ ν©λλ€.
- νμμλ μμμ μμ μ°μ°μ΄ μ΄λ£¨μ΄μ§λ κ³³μ μ(front)μ΄λΌ νκ³ μ½μ μ°μ°μ΄ μ΄λ£¨μ΄μ§λ κ³³μ λ€(rear)λΌκ³ ν©λλ€.
- ν μμ± ν¨μ(Create_q(maxQueueSize))λ₯Ό νΈμΆνκΈ°λ§ νλ©΄ νλ‘κ·Έλλ¨Έκ° μ§μ ν ν¬κΈ°μ μλ‘μ΄ νλ₯Ό μμ±ν μ μμ΅λλ€. Create_q(maxQueueSize) ν¨μμ λ§€κ°λ³μμΈ maxQueueSizeλ νκ° μ μ₯ν μ μλ μ΅λ κ°μμ μμ(element)λ₯Ό μλ―Έν©λλ€.
- Boolean IsFull_q(queue, maxQueueSize) μ°μ°μ νκ° κ°λ μ°Όλμ§λ₯Ό νμΈν©λλ€. μ¦, νμ μ μ₯λ μμ(element)μ κ°μκ° maxQueueSizeμ κ°λ€λ©΄, κ·Έ νλ κ°λ μ°ΌμΌλ©° νμ μλ£(μμ)λ₯Ό λ μ΄μ μ μ₯μν¬ μ μλ€λ κ²μ μλ―Έν©λλ€.
- Queue Add_q(queue, item) μ°μ°μ νμ μλ‘μ΄ μμλ₯Ό μ½μ ν©λλ€. λ§μΌ νκ° κ°λ μ°Όλ€(Full)λ©΄ λ μ΄μμ μμλ₯Ό νμ μ½μ ν μ μμΌλ©°, ‘queueFull‘ λ©μμ§λ₯Ό μΆλ ₯ν©λλ€.
- Boolean IsEmpty(queue) μ°μ°μ ν μνκ° λΉ μνμΈμ§λ₯Ό νμΈν©λλ€. λ§μΌ νκ° λΉ μνμ΄λ©΄ ‘TRUE’ κ°μ λ°ννκ³ , νμ νλμ΄μμ μμλΌλ μλ€λ©΄ ‘FALSE’ κ°μ λ°νν©λλ€.
- Element Delete_q(queue) μ°μ°μλ νκ° λΉ μνλΌλ©΄ μμ ν μμκ° μμΌλ―λ‘ ‘queueEmpty‘λ₯Ό μΆλ ₯ν©λλ€. νμ§λ§, λΉ μνκ° μλλΌλ©΄ μμ ν μμκ° μμΌλ―λ‘, νμ frontκ° κ°λ¦¬ν€λ μμλ₯Ό μμ νκ³ κ·Έ μμλ₯Ό λ°νν©λλ€.
- νμ μΆμμλ£νμμ μ μλ μ°μ°μ μμ€ν κ°λ°μμ λ°λΌ λ€λ₯΄κ² μ μλκ³ κ΅¬νλ μλ μκ³ , μ»΄νμΌλ¬ μ€κ³μμ λ°λΌ νλ‘κ·Έλλ° μΈμ΄μμ λ€λ₯΄κ² μ 곡λ μλ μμ΅λλ€.
- μννλ νμ΄νμ μ ꡬμ μΆκ΅¬ λΆλΆμ μ°κ²°μν¨ ννμ λλ€. μ°κ²°λ λΆλΆμ λ°μ΄ν° 곡κ°μ μ°μμ μΌλ‘ μ¬μ©νκΈ° μν΄ ‘λλ¨Έμ§ μ°μ°μ‘λ₯Ό μ¬μ©ν©λλ€.