소프트웨어 요점정리 04. 운영체제

Eojin·2023년 11월 29일
0

작성일
20231129


➡️ CS STUDY 4주차


✅ 동시성(병행성, Concurrency)

동시성은 여러 개의 Task가 있을 때 독립적으로 실행될 수 있어, 서로 다른 Task를 실행하는 시점이 서로 영향을 미치지 않는 성질을 말합니다. 즉, 마치 동시에 여러 작업이 진행되는 것처럼 보이는 성질을 말하며, 실제로 무조건 동시에 진행되어야 한다는 전제조건은 없다는 것이 병렬성과의 차이입니다.

이러한 동시성 특성을 나타낼 수 있는 대표적인 경우로는 이벤트 기반 프로그래밍, 멀티스레드 프로그래밍, 비동기 작업, 그리고 시분할 시스템이 있습니다. 자바스크립트가 동시성을 다루는 방식을 통해 보다 구체적인 예를 들자면, 일반적으로 단일 스레드에서 이벤트 기반 비동기 프로그래밍 모델을 사용하는 자바스크립트의 경우, 웹 애플리케이션에서의 상호작용이나 브라우저의 비동기적 이벤트 처리에서 앞서 설명한 동시성이 나타나곤 합니다.

CF. CPU의 싱글코어와 멀티코어 - 추가공부 필요

[컴퓨터공학 이론 : 하드웨어] 시리즈 中
https://velog.io/@song-eojin/%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4-%EA%B8%B0%EC%B4%88-02.-CPU


✅ 병렬성(Parallelism)

병렬성은 Task의 실행 시점이 같을 수도 다를 수도 있는 동시성과 달리, 실제로 물리적으로 동시에 작업이 진행되는 경우를 가리킵니다. 혼동하기 쉬운 동시성과 병렬성은 별개의 개념으로, 두 가지 모두 만족할 수도 아닐 수도 있습니다.

병렬성 특성을 나타낼 수 있는 대표적인 경우로는 네트워크 상의 여러 컴퓨터에게 분산작업을 요청하는 분산 컴퓨팅, 멀티스레드 프로그래밍, 멀티프로세싱, 데이터베이스 병렬처리 등이 있습니다. 특정 언어를 통해 병렬성의 보다 구체적인 예를 들자면, 자바의 경우 멀티 스레드를 명시적으로 지원하여 병렬성을 활용하곤 하는 경우를 들 수 있습니다.

✅ 프로세스 동기화(Process synchronization)

프로세스 동기화는 여러 프로세스나 스레드가 공유된 자원에 동시에 접근하는 것을 효율적으로 제어하고, 서로의 작업이 조율되도록 해주는 기술로, 프로세스 동기화 기술은 안전하고 효율적인 동시 실행을 지원하기 위해 다중 프로세스, 다중 스레드, 네트워크 통신, 운영체제에서 중요하게 다뤄지는 기술입니다.

EX. 프로세스 동기화 예시

다중 프로세스 환경에서 여러 프로세스가 공유된 자원에 접근할 때, 경쟁 조건(Race Condition)이나 데드락 같은 문제로 인해 각 프로세스가 서로의 작업을 방해받지 않도록 조율하기 위해 사용됩니다.

다음으로 다중 스레드 환경에서는 공유 자원에 대한 접근을 조율해서 데이터 무결성을 보장하고 예측 가능한 실행을 유지할 수 있도록 해줍니다.

운영체제에서도 이러한 프로세스 동기화가 여러 프로세스 관리를 위해 사용되며, 뿐만 아니라 네트워크 통신에서도 분산 시스템에서 여러 프로세스 간의 통신이나 서버 간의 통신이 발생할 경우 데이터 일관성 유지를 위해 사용되곤 합니다.

✅ 임계영역(Critical Section)


✅ 경쟁조건(Race Condition)


✅ 경쟁조건의 해결방법


✅ 상호배제(Mutual Exclusion)


✅ 상호배제 방법


✅ 뮤텍스(Mutex)


✅ 세마포어(Semaphore)


✅ 뮤텍스(Mutex)와 이진 세마포어의 차이


✅ 모니터


✅ 데드락(Deadlock)


✅ 데드락 발생 조건 4가지


✅ 데드락 회피 방법



➡️ 참고자료

[BLOG]

동시성(Concurrency)과 병렬성(Parallelism)의 차이 -자바스크립트와 자바 예시
https://medium.com/@su_bak/%EB%8F%99%EC%8B%9C%EC%84%B1-concurrency-%EA%B3%BC-%EB%B3%91%EB%A0%AC%EC%84%B1-parallelism-%EC%9D%98-%EC%B0%A8%EC%9D%B4-44e6fda0a0cd

[Study] 동시성(Concurrency) 과 병렬성 (Parallelism) 올바른 개념 잡기 - 코어와 스레드를 통한 개념 설명
https://vagabond95.me/posts/concurrency_vs_parallelism/


profile
'함께'가 즐거운 개발 공부하는 사람입니다.

0개의 댓글

관련 채용 정보