❓
물음표살인마 블로그
  • README
  • ALGORITHM
    • Sieve of Eratosthenes
    • Round Up
    • Binary Search
    • Union Find
    • Sorting Array
    • Lcm, Gcd
  • TechTalk Review
    • Template
  • Books
    • CS Note for Interview
      • Ch1. Design Pattern & Programming paradigm
        • 1.1.1 Singleton Pattern
        • 1.1.2 Factory Pattern
        • 1.1.4 Observer Pattern
        • 1.1.5 Proxty Pattern & Proxy Server
        • 1.1.8 Model-View-Controller Pattern
        • 1.2.1 Declarative and Functional Programming
        • 1.2.2 Object Oriented Programming
      • Ch2. Network
        • 2.2.1 TCP/IP Four-Layer Model
        • 2.2.1-1 TCP 3, 4 way handshake
        • 2.3 Network Devices L4, L7
        • 2.4.1 ARP, RARP
        • 2.4.2 Hop By Hop Communication
        • 2.4.3 IP Addressing Scheme
      • Ch3. Operating System
        • 3.1.1 Roles and Structure of Operating Systems
        • 3.2.1 Memory Hierarchy
        • 3.2.2 Memory Management
        • 3.3.1 Processes and Compilation Process
        • 3.3.3 Memory Structure of a Process
        • 3.3.4 Process Control Block (PCB)
        • 3.3.5 Multiprocessing
        • 3.3.6 Threads and Multithreading
        • 3.3.7 Shared Resources and Critical Sections
        • 3.3.8 Deadlock
        • 3.4 CPU Scheduling Algorithm
      • Ch4. Database
        • 4.1 Database Basic
        • 4.2 Normalization
        • 4.3 Transaction and Integrity
        • 4.4 Types of Databases
        • 4.5 Indexes
        • 4.6 Types of Joins
        • 4.7 Principles of Joins
      • Ch5. Data Structure
    • Learning the Basics of Large-Scale System Design through Virtual Interview Cases
      • 1. Scalability based on user counts(1/2)
      • 1. Scalability based on user counts(2/2)
      • 2.Back-of-the-envelope estimation
      • 3. Strategies for System Design Interviews
      • 4. Rate Limiter
      • 5. Consistent Hashing
      • 6. Key-Value System Design
      • 7. Designing a Unique ID Generator for Distributed Systems
      • 8. Designing a URL Shortener
      • 9. Designing a Web Crawler
      • 10. Notification System Design
      • 11. Designing a News Feed System
      • 12. Chat System Design
      • 13. AutoComplete
      • 14. Design YouTube
      • 15. Design Google Drive
      • Loadbalancer Algorithms
      • Cache tier
      • CDN, Content Delivery Network
      • Stateless Web tier
    • Computer System A programmer's perspective
    • Effective Java
      • Item 1. Consider Static Factory Methods Instead of Constructors
      • Item 2. Consider a Builder When Faced with Many Constructor Parameters
      • Item 3. Ensure Singleton with Private Constructor or Enum Type
      • Item 4. Enforce Noninstantiability with a Private Constructor
      • Item 5. Prefer Dependency Injection to Hardwiring Resources
      • Item 6. Avoid Creating Unnecessary Objects
      • Item 7. Eliminate Obsolete Object References
      • Item 8. Avoid Finalizers and Cleaners
      • Item 9.Prefer try-with-resources to try-finally
      • Item10. Adhering to General Rules When Overriding equals
        • Handling Transitivity Issues
        • Ensuring Consistency
      • Item11. Override hashCode When You Override equals
      • Item12. Always Override toString
        • Always Override toString
      • Item13. Override Clone Judiciously
      • Item14. Consider Implementing Comparable
      • Item15. Minimize the Accessibility of Classes and Members
      • Item16. Accessor Methods Over Public Fields
      • Item17. Minimize Mutability
      • Item18. Composition over inherentance
      • Item19. Design and Document for Inheritance, or Else Prohibit It
      • Item20. Prefer Interfaces to Abstract Classes
      • Item21. Design Interfaces with Implementations in Mind
      • Item22. Use Interfaces Only to define Types
      • Item23. Prefer Class Hierarchies to Tagged Classes
      • Item24. Favor Static Member Classes Over Non-Static
      • Item28. Use Lists Instead of Arrays
      • Item29. Prefer Generic Types
      • Item30. Favor Generic Methods
    • Head First Design Patterns
      • Ch1. Strategy Pattern
      • Ch2. Observer Pattern
        • Ver1. Ch2. Observer Pattern
      • Ch3. Decorator Pattern
        • Ch3. Decorator Pattern
      • Ch4. Factory Pattern
      • Ch5. Singleton Pattern
      • Ch6. Command Pattern
      • Ch7. Adapter and Facade Pattern
      • Ch8. Template Method Pattern
    • Digging Deep into JVM
      • Chapter 2. Java Memory Area & Memory Overflow
      • Chapter 3. Garbage Collector & Memory Allocation Strategy (1/2)
      • Chapter 3. Garbage Collector & Memory Allocation Strategy (2/2)
      • Chapter 5. Optimization Practice
      • Chapter 6. Class file structure
      • Chapter 8. Bytecode Executor Engine (1/2)
  • Interview Practices
    • Restful API Practices
      • Url Shortener API
      • Event Ticket Reservation API
      • Course Management API
      • Search posts by tags API
      • Online Code platform API
      • Simple Task Management API
      • Event Participation API
      • Review System API
      • Car management API
      • Online Library
    • Tech Review
      • if(kakao)
        • Kakao Account Cache Migration / if(kakao)2022
        • Improving the Anomaly Detection System for KakaoTalk Messaging Metrics / if(kakao) 2022
        • Standardizing API Case Handling Without Redeployment / if(kakaoAI)2024
        • JVM warm up / if(kakao)2022
    • Naver Computer Science
      • Process & Thread
      • TCP & UDP
      • Spring & Servlet
      • Filter & Interceptor & AOP
      • Equals() & ==
      • Dependency Injection
      • Object Oriented Programming
  • F-Lab
    • Week1
      • Client & Server
      • HTTP
      • TCP/UDP
      • REST API
      • Questions
        • Object Oriented Programming
        • HTTP
        • Process & Thread
        • Data Structure
    • Week2
      • OSI 7 layer
      • Web vs WAS
    • Week3
      • RDB vs NoSQL
      • RDB Index
      • Cache
      • Redis
      • Messaging Queue
    • Week4
      • Project - Ecommerce
    • Week5
      • ERD - 1
    • Week6
      • Ecommerce - 2
      • Role
      • pw hashing && Salt
      • CreatedAt, ModifiedAt
      • JWT
      • Copy of ERD - 1
    • Week7
      • Vault (HashiCorp Vault)
    • Week 8
      • Api Endpoints
    • Week10
      • Product Create Workflow
  • TOY Project
    • CodeMentor
      • Implementation of Kafka
      • Project Improvement (Architectural Enhancements)
      • Communication between servers in msa
  • JAVA
    • MESI protocol in CAS
    • CAS (Compare and Set)
    • BlockingQueue
    • Producer & Consumer
    • Synchronized && ReentrantLock
    • Memory Visibility
    • Checked vs Unchecked Exception
    • Thread
    • Batch delete instead of Cascade
    • Java Questions
      • Week 1(1/2) - Basic Java
      • Week 1(2/2) - OOP
      • Week 2(1/2) - String, Exception, Generic
      • Week2(2/2) Lambda, Stream, Annotation, Reflection
      • Week3(1/2) Collections
      • Week3(2/2) Threads
      • Week4 Java Concurrency Programming
      • Week5 JVM & GC
    • Java 101
      • JVM Structure
      • Java Compiles and Execution Method
      • Override, Overload
      • Interface vs Abstract Class
      • Primitive vs Object Type
      • Identity and equality
      • String, StringBuilder, StringBuffer
      • Checked Exceptions and Unchecked Exceptions
      • Java 8 methods
      • Try-with-reources
      • Strong Coupling and Loose Coupling
      • Serialization and Deserialization
      • Concurrency Programming in Java
      • Mutable vs Immutable
      • JDK vs JRE
  • SPRING
    • DIP. Dependency Inversion Principal
    • Ioc container, di practice
    • @Transactional
    • Proxy Pattern
    • Strategy Pattern
    • Template Method Pattern
    • using profile name as variable
    • Spring Questions
      • Spring Framework
      • Spring MVC & Web Request
      • AOP (Aspect-Oriented Programming)
      • Spring Boot
      • ORM & Data Access
      • Security
      • ETC
  • DATABASE
    • Enhancing Query Performance & Stability - User list
    • Ensuring Data Consistency, Atomicity and UX Optimization (feat.Firebase)
    • Redis: Remote Dictionary Server
    • Database Questions
      • Week1 DBMS, RDBMS basics
      • Week2 SQL
      • Week3 Index
      • Week4 Anomaly, Functional Dependency, Normalization
      • Week5 DB Transaction, Recovery
    • Normalization
      • 1st Normal Form
      • 2nd Normal Form
      • 3rd Normal Form
  • NETWORK
    • HTTP & TCP head of line blocking
    • HTTP 0.9-3.0
    • Blocking, NonBlocking and Sync, Async
    • Network Questions
      • Week1 Computer Network Basic
      • Week2(1/3) Application Layer Protocol - HTTP
      • Week2(2/3) Application Layer Protocol - HTTPS
      • Week2(3/3) Application Layer Protocol - DNS
      • Week3 Application Layer
      • Week4 Transport Layer - UDP, TCP
      • Week5 Network Layer - IP Protocol
    • Network 101
      • https://www.google.com
      • TCP vs UDP
      • Http vs Https
      • TLS Handshake 1.2
      • HTTP Method
      • CORS & SOP
      • Web Server Software
  • OS
    • Operating System Questions
      • Week1 OS & How Computer Systems Work
      • Week2(1/2) Process
      • Week2(2/2) Thread
      • Week3 CPU Scheduling
      • Week4 Process Synchronize
      • Week5 Virtual Memory
    • Operating System 101
      • Operating system
        • The role of the operating system
        • The composition of the operating system.
      • Process
        • In Linux, are all processes except the initial process child processes?
        • Zombie process, orphan process
        • (Linux) Daemon process
        • Process address space
        • Where are uninitialized variables stored?
        • Determination of the size of the Stack and Heap
        • Access speed of Stack vs Heap
        • Reason for memory space partitioning
        • Process of compiling a process
        • sudo kill -9 $CURRENT_PID
      • Thread
        • Composition of a thread's address space
      • Process vs Thread
        • Creation of processes and threads in Linux
      • Multiprocessing
        • Web Browser
        • Implementation of multiprocessing
        • Application areas of multiprocessing
      • Multithreading
        • Application areas of multithreading
      • Interrupt
        • HW / SW Interrupt
        • Method of handling interrupts
        • Occurrence of two or more interrupts simultaneously
      • Polling
      • Dual Mode
        • Reason for distinguishing between user mode and kernel mode
      • System call
        • Differentiation between system calls
        • Types of system calls
        • Execution process of a system call
      • Process Control Block (PCB)
        • PCB의 구조
        • 쓰레드는 PCB를 갖고 있을까?
        • 프로세스 메모리 구조
      • Context switching
        • Timing of context switching
        • Registers saved during context switching
        • Context switching in processes
        • Context switching in threads
        • Difference between context switching in processes and threads
        • Information of the current process during context switching
      • Interprocess Communication (IPC)
        • Cases where IPC is used
        • Process address space in IPC Shared Memory technique
        • Types of IPC
  • COMPUTER SCIENCE
    • Computer Architecture 101
      • 3 components of a computer
      • RAM vs ROM
      • CPU vs GPU
      • SIMD
      • Two's complement
      • Harvard Architecture vs. von Neumann Architecture
      • The structure of a CPU.
      • Instruction cycle (CPU operation method)
      • Instruction pipelining
      • Bus
      • Memory area
      • Memory hierarchy structure
        • Reason for using memory hierarchy structure
      • Cache memory
      • L1, L2, L3 Cache
      • Locality of reference (cache)
      • Fixed-point vs Floating-point
        • epresentation of infinity and NaN (Not a Number) in floating-point
      • RISC vs CISC
      • Hamming code
      • Compiler
      • Linking
      • Compiler vs Interpreter
      • Mutex vs Semaphore
      • 32bit CPU and 64bit CPU
      • Local vs Static Variable
      • Page
  • Programming Paradigm
    • Declarative vs Imperative
  • JPA, QueryDsl
    • why fetchResults() is deprecated
  • PYTHON
    • Icecream
  • FASTAPI
    • Template Page
  • LINUX
    • Template Page
  • DATA STRUCTURE
    • Counting Sort
    • Array vs Linked List
  • GIT, Github
    • git clone, invalid path error
  • INFRA
    • Template Page
  • AWS
    • Server Log Archive Pipeline
    • Image Processing using Lambda
  • DOCKER
    • Docker and VM
    • Python Executable Environment
    • Docker commands
  • docker-compose
    • Kafka, Multi Broker
  • KUBERNATES
    • !Encountered Errors
      • my-sql restarts
      • kafka producer: disconnected
    • Kubernetes Components
    • Helm
      • Helm commands
    • Pod network
    • Service network
      • deployment.yaml
      • services.yaml
    • Service type
      • Cluster IP
      • NodePort
    • service-name-headless?
    • kube-proxy
  • GraphQL
    • Template Page
  • WEB
    • Template Page
  • Reviews
    • Graphic Intern Review
    • Kakao Brain Pathfinder Review
    • JSCODE 자바 1기 Review
  • 😁Dev Jokes
    • Image
      • Plot twist
      • Priorities
      • SQL join guide
      • Google is generous
      • Genie dislikes cloud
      • buggy bugs
      • last day of unpaid internship
      • what if clients know how to inspect
      • its just game
      • how i wrote my achievement on resume
      • self explanatory
      • chr(sum(range(ord(min(str(not))))))
Powered by GitBook
On this page
  • 병행성에 대해 설명해주세요. (병렬성 X)
  • 병렬성에 대해 설명해주세요.
  • 프로세스 동기화가 뭔가요?
  • Critical Section(임계 영역)에 대해 설명해주세요.
  • 경쟁 상태(Race Condition)이 뭔가요?
  • Race Condition을 어떻게 해결할 수 있나요?
  • Mutual Exclusion(상호 배제)에 대해 설명해주세요.
  • 뮤텍스에 대해 설명해주세요.
  • 세마포어에 대해 설명해주세요.
  • 뮤텍스와 이진 세마포어의 차이에 대해 설명해주세요.
  • 모니터(Monitor)에 대해 설명해주세요
  • 데드락이 무엇인가요?
  • 데드락 발생 조건 4가지를 설명해주세요.
  • 데드락을 막는 방법에 대해 설명해주세요.
  1. OS
  2. Operating System Questions

Week4 Process Synchronize

프로세스 동기화

병행성에 대해 설명해주세요. (병렬성 X)

"여러 작업이 논리적으로 동시에 실행되는 것을 의미"

  • 여러 작업이 동시에 실행되는 것처럼 보이도록 작업들을 빠르게 번갈아가며 수행하는 것을 의미

  • 특히 단일 코어 시스템에서 여러 스레드가 동시에 실행되는 것처럼 보이지만 실제로는 교대로 실행

  • CPU코어 < 스레드

  • 멀티코어 CPU라면, 여러 코어가 동시에 여러 스레드를 병렬로 처리할 수 있지만, 코어가 부족한 경우, 여러 스레드가 교대로 실행됩니다.

(여러 프로세스가 있을 경우, CPU 스케줄러는 프로세스 단위로 CPU 시간을 할당. 한 프로세스가 CPU를 배정받으면, 그 프로세스 내에서 스레드들 간에도 스케줄링이 이루어짐.)

병렬성에 대해 설명해주세요.

"여러 작업이 물리적으로 동시에 실행되는 것을 의미"

  • 멀티프로세싱 시스템이나 멀티스레드 환경(+멀티 프로세싱 시스템) 에서 발생하며, 여러 개의 CPU 코어 또는 프로세서가 동시에 각기 다른 작업을 실행할 때 병렬 처리가 이루어짐

  • 작업이 실제로 동시에 진행되기 때문에 성능 향상에 유리

  • 병렬 컴퓨팅에서 중요한 역할(하나의 큰 작업을 여러 개의 작은 작업으로 나누어 동시에 처리하는 방식)

프로세스 동기화가 뭔가요?

  • 프로세스 동기화란 여러 프로세스가 동시에 공유 자원에 접근할 때, 데이터의 일관성과 무결성을 유지하는 것을 의미

  • 다수의 프로세스가 같은 자원에 접근할 때 경쟁 상태(Race Condition) 가 발생하지 않도록 프로세스 간의 실행 순서를 제어

  • 뮤텍스, 세마포어 같은 동기화 메커니즘을 사용해 구현됩니다.

Binary Semaphore vs Mutex

소유권에 대한 차이.

이진 세마포어는 특정 이벤트를 기다리는 시스템에서 사용. Pub/Sub. Pub이 가득찼다는 0으로 변경하고 Sub이 비어있다는 1로 변경 하는 상황

OR

하나의 프로세스가 I/O 작업을 시작하고, 그 작업이 완료되면 다른 프로세스나 시스템이 자원 해제를 트리거하는 경우.

예를 들어, 프로세스 A가 파일을 읽고 쓰기 작업을 시작하고, 프로세스 B가 작업 완료 후 자원 해제를 처리.

예시 동작: 프로세스 A는 파일에 접근하여 데이터를 쓰기 시작하고, 이진 세마포어를 사용해 자원을 잠급니다(세마포어 값 0). 데이터가 다 쓰여지면 프로세스 B가 이를 감지하고, 이진 세마포어 값을 1로 변경하여 자원을 해제합니다. 이진 세마포어의 역할: 프로세스 A가 파일 쓰기를 잠근 후, 다른 프로세스가 그 작업이 완료된 것을 확인하고 자원을 해제할 수 있습니다.

여기에서 프로세스 B는 파일에 접근하려는 목적이 아니고 그냥 세마포어를 관리

Critical Section(임계 영역)에 대해 설명해주세요.

  • 여러 프로세스나 스레드가 공유 자원에 접근하는 코드의 특정 부분

  • 동시에 여러 프로세스나 스레드가 이 영역에 진입하면 데이터 일관성 문제가 발생

  • 하나의 프로세스 또는 스레드만이 접근할 수 있도록 상호 배제(Mutual Exclusion)가 필요

경쟁 상태(Race Condition)이 뭔가요?

  • 두 개 이상의 프로세스나 스레드가 동시에 공유 자원에 접근할 때, 실행 순서에 따라 결과가 달라지거나 예기치 않은 결과가 발생하는 상태

  • 두 스레드가 동일한 변수를 동시에 읽고 수정할 때, 한 스레드의 변경이 다른 스레드에 의해 덮어쓰여 원치 않는 결과가 발생

  • 상호 배제를 통해 해결 -> 뮤텍스, 세마포어 같은 동기화 메커니즘

Race Condition을 어떻게 해결할 수 있나요?

RaceCondition: 두개 이상의 프로세스/스레드가 공유 리소스에 동시에 접근할때 실행 순서에 따라 결과값이 달라지는 상황

Race Condition을 해결하기 위해서는 상호보안 (Mutual Exclusive)이 보장되어야합니다.

락 메커니즘

  • 뮤텍스: 한 번에 하나의 스레드 또는 프로세스만이 임계 영역에 진입 락의 소유권을 가지며, 작업이 끝난 후 락을 반환 스핀락 등을 통해 재시도(But CPU 자원 사용)

  • 이진 세마포어: 0과 1의 값을 가지며, 뮤텍스와 유사하지만, 락을 설정한 스레드와 해제하는 스레드가 다를 수 있다는 차이

  • 카운팅 세마포어: 동시에 접근할 수 있는 프로세스나 스레드의 수를 N개로 제한

Spin Lock vs Blocking Wait

스핀락(Spinlock)

  • 스핀락은 자원이 사용 중일 때, 스레드가 잠금(락)이 해제될 때까지 지속적으로 확인하는 방식입니다.

  • 스핀락은 바쁜 대기(Busy Waiting) 상태에 놓이며, 자원을 사용할 수 있을 때까지 계속 CPU 자원을 사용하면서 락을 시도합니다.

  • 특징: CPU 자원을 소비하면서 계속해서 락 상태를 확인하므로, 락이 짧은 시간 안에 해제될 가능성이 높다면 스핀락이 효율적일 수 있습니다. 하지만 락이 오랫동안 유지된다면 CPU 자원 낭비가 발생할 수 있습니다.

2. 블로킹 대기(Blocking Wait) - 대기 상태

  • 스레드가 자원을 얻지 못했을 때 스케줄러에 의해 블로킹 상태로 전환됩니다.

  • 스레드 대기 큐에 들어가 대기하며, CPU를 사용하지 않고 이벤트나 신호를 기다립니다.

  • 이벤트(Event) 대기: 락을 가진 스레드가 작업을 끝내고 락을 해제할 때, 이벤트 신호(예: 조건 변수, 세마포어, 뮤텍스)를 통해 다른 스레드에게 자원이 사용 가능하다는 신호를 보냅니다. 대기 중인 스레드는 이 신호를 받아서 실행 상태로 전환되고, 자원에 접근할 수 있게 됩니다.

Mutual Exclusion(상호 배제)에 대해 설명해주세요.

  • 임계 영역에 동시에 여러 프로세스 또는 스레드가 접근하지 못하도록 하는 것

  • 여러 프로세스나 스레드가 한 번에 하나만 임계 영역에 진입하도록 제한하여 Race Condition을 방지하는 것이 목적

  • 뮤텍스는 주로 상호 배제를 보장하기 위해 사용되고, 세마포어는 여러 스레드나 프로세스의 동시 접근을 조절

뮤텍스에 대해 설명해주세요.

  • 뮤텍스(Mutex)는 상호 배제(Mutual Exclusion)를 보장하기 위해 사용되는 락 메커니즘으로, 여러 스레드 또는 프로세스가 동시에 공유 자원에 접근하지 못하도록 하는 역할

  • 임계 영역(Critical Section)에서 발생할 수 있는 Race Condition(경쟁 상태)를 예방하기 위해 사용되며, 한 번에 하나의 스레드 또는 프로세스만이 자원에 접근할 수 있도록 제한

  • 뮤텍스는 락을 획득한 스레드만이 락을 해제할 수 있습니다. 이는 이진 세마포어와의 차이점으로, 이진 세마포어는 다른 스레드가 락을 해제할 수 있지만, 뮤텍스는 반드시 락을 건 스레드가 해제해야 합니다.

세마포어에 대해 설명해주세요.

  • 세마포어(Semaphore)는 여러 프로세스나 스레드가 공유 자원에 안전하게 접근할 수 있도록 자원의 사용을 제어하는 동기화 메커니즘

  • 이진 세마포어(Binary Semaphore): 뮤텍스와의 차이는, 이진 세마포어는 락을 획득한 스레드가 아닌 다른 스레드나 프로세스도 락을 해제할 수 있다는 것

  • 카운팅 세마포어: 동시에 접근할 수 있는 스레드 또는 프로세스의 수를 제한

뮤텍스와 이진 세마포어의 차이에 대해 설명해주세요.

  • 뮤텍스: 뮤텍스를 잠근 스레드나 프로세스만이 락을 해제할 수 있습니다. 즉, 락을 획득한 소유권이 존재

  • 이진 세마포어: 다른 스레드나 프로세스도 락을 해제할 수 있습니다. 즉, 자원을 획득한 스레드가 아닌 다른 스레드도 락을 해제

모니터(Monitor)에 대해 설명해주세요

  • 프로그래밍 언어 수준에서 제공되는 고수준의 동기화 메커니즘

  • 락(Lock)과 조건 변수(Condition Variable)를 포함하는 구조로, 이를 통해 스레드 간의 동기화를 쉽게 관리 (락 메커니즘 이상의 역할)

  • 객체 내의 공유 자원에 접근할 수 있는 메커니즘을 자동으로 제어.

  • 특징: 자동 동기화: 프로그래머가 직접 락을 관리하지 않아도, 모니터는 상호 배제를 보장하며 동기화 문제를 해결합니다. 상호 배제: 모니터는 한 번에 하나의 스레드만 임계 영역에 진입할 수 있도록 제어하여, Race Condition을 방지합니다. 고수준 동기화: 모니터는 자원 관리와 스레드 간 동기화를 자동으로 처리해 프로그래머가 직접 락과 조건 변수를 다룰 필요가 없습니다.

데드락이 무엇인가요?

  • 데드락(Deadlock)은 두 개 이상의 프로세스 또는 스레드가 서로가 가진 자원을 기다리며 무한 대기 상태에 빠지는 현상

  • 상호 배제, 점유 대기, 비선점, 순환 대기 조건이 모두 만족하면 데드락이 발생합니다.

데드락 발생 조건 4가지를 설명해주세요.

  • 상호 배제: 한번에 하나의 스레드 또는 프로세스가 접근할 수 있는 조건

  • 비선점:다른 스레드나 프로세스가 강제로 점유하고 있는 리소스의 소유권을 뻇을 수 없는 조건

  • 점유 대기: 프로세스가 이미 하나 이상의 자원을 점유하고 있는 상태

  • 순환 구조: 여러 프로세스가 순환적으로 자원을 요청하며 서로를 대기하는 상태

데드락을 막는 방법에 대해 설명해주세요.

데드락 예방

  • 상호 배제 조건 완화: 동시 접근 가능하게 합니다. (읽기 작업 등)

  • 점유 대기 조건 완화: 요청할때 모든 자원의 락을 한꺼번에 (순차적으로)요청. 만약 중간에 획득이 불가능하면 다 반환을 한다.

  • 비선점 조건 완화: 다른 프로세스가 자원을 강제로 가져갈 수 있도록

  • 순환 대기 조건 완화: 자원을 고정된 순서로만 요청

데드락 회피

  • 은행원 알고리즘: 은행원이 고객에게 대출을 해주는 방식. 자원의 상태를 미리 검사하여 데드락이 발생할 수 있는지 판단한 후, 안전한 자원 할당만을 허용(매니저가 관리해주는 것 처럼)

데드락 무시

  • 관리자가 직접 해결

PreviousWeek3 CPU SchedulingNextWeek5 Virtual Memory

Last updated 8 months ago