본문 바로가기

CS/OS

(3)
[OS] Thread Safe(스레드 안전) 먼저 Thread(스레드)란 프로세스내에서 실행되는 여러 흐름의 단위이다. 하나의 프로세스내에서는 기본적으로 한 개 이상의 스레드를 가질 수 있는데, 두 개 이상의 스레드를 수행하는 것을 멀티 스레딩이라고 한다. 프로세스 내부의 스레드들은 각각 자신의 스택 영역을 독립적으로 가진 상태로 Code, Data, Heap 영역을 서로 공유하여 사용하기 때문에 두 개 이상의 쓰레드가 자신이 포함된 프로세스의 영역에 있는 함수를 호출할 수 있다. 그렇기 때문에 두 개 이상의 스레드들이 동시에 공유중인 프로세스의 영역(Code/Data/Heap)에 접근하게 되면 쓰레드가 충돌하는 동기화 문제가 발생할 수 있다. 공유 변수의 값이 50이라고 가정할 때 A 쓰레드가 접근하였을 때 해당 공유 변수의 값이 50 이상일 경..
OS - 멀티 프로세스 vs 멀티 스레드 멀티 프로세스와 멀티 스레드는 시스템의 컴퓨팅 성능을 높이는 데 사용되는 처리방식 멀티 프로세스 두 개 이상의 여러개의 프로세서(CPU)가 협력적으로 하나의 작업(Task)을 동시에 처리하는 것입니다. (병렬 처리) 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용합니다. 장점 독립된 구조로 안전성 높음. 여러 자식 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 작업속도가 느려지는 손해 정도는 생기고 정지되는 문제는 발생하지 않아서 안정적인 운영이 가능. 여러 개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서가 이를 공유하면 비용적으로 저렴함. 문제점 독립된 메모리 영역이기 때문에 작업량..
OS - 프로세스와 스레드의 차이(Process vs Thread) 개발자 단골 면접 질문으로 신입때 거의 나오는 수준이라고 하는 프로세스(Process와 스레드(Thread)의 차이를 간단하게 알아보겠습니다. 먼저, 프로세스와 스레드를 알기전 프로그램을 짚고 넘어가겠습니다. 프로그램(Program)이란 저장 장치(보조기억장치)에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태의 파일을 말합니다. 보조기억장치(ex:SSD, HDD)라는 대용량의 파일들을 저장할 수 있는 공간에서 실행되지 않고 가만히 있음. 프로세스(Process)란 운영체제로부터 자원을 할당받아 메모리 공간에 올라간 실행중인 프로그램 프로그램들은 CPU가 실행할 수 없기 때문에 프로그램을 실행하기 위한 메모리 공간을 할당 받는데 이것을 프로세스라고 합니다. 실행 과정 저장장치에 정적인 상태의 파..