CS(38)
-
Thread-Safe의 의미와 설계방법
Thread-Safe의 의미와 설계방법 Thread-Safe란 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없는 것을 말한다. 하나의 함수가 한 스레드로부터 호출되어 실행중일때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행결과가 올바르게 나오는 것을 의미한다. Thread-Safe 구현방법 Re-entrancy(재진입성) 어떤 함수가 한 스레드에 의해 호출되어 실행중일때, 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바르게 주어져야한다. Thread-Local Storage(스레드 지역 저장소) 공유자원이 사용을 최대한 줄여, 각각의 스레드에만 접근 가능한..
2024.01.19 -
스레드, tcb, 사용자 수준 스레드 및 커널 수준 스레드, 멀티 프로그래밍, 멀티스레드?
스레드 프로세스 안에서 실행되는 흐름의 단위로, stack영역을 제외한 나머지 영역을 공유하게 된다. stack을 스레드마다 독립적으로 할당하는 이유? stack은 함수 호출시, 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간을 의미한다. stack메모리 공간이 독립적이라는 것은, 독립적인 함수 호출이 가능하다는 것이고, 이것은 곧 독립적인 실행흐름을 추가되는 것을 의미한다. 따라서, 스레드의 정의에 따라 독립적인 실행흐름을 추가하기 위해서 최소 조건으로 독립된 stack을 할당한다. 장점 시스템의 처리량이 향상된다. 단점 여러개의 스레드를 이용하는 프로그램을 작성하는 경우에는 critical section을 잘 관리하여 여러 스레드가 함꼐 공유 자..
2024.01.18 -
프로세스끼리 협력하는 방법
프로세스끼리 협력하는 방법 IPC(Interprocess Communication)는 협력 프로세스 사이에서 서로 데이터를 주고 받는 방법을 의미한다. IPC에는 크게 두가지 모델로 나뉜다. Shared Memory 서로 다른 프로세스 간에 일부 주소 공간을 공유하여 데이터를 주고받는 방식을 의미한다. 프로세스가 공유 메모리 할당을 커널에 요청하면, 커널은 해당 프로세스에 메모리 공간을 할당해준다. 공유메모리 영역이 구축된 이후에는 모든 접근이 일반적인 메모리 접근으로 취급되기 때문에 더 이상 커널의 도움없이도 각 프로세스들이 해당 메모리 영역에 접근할 수 있다. 공유 메모리 방식은 프로세스 간의 통신을 수월하게 만들지만, 동시에 같은 메모리 위치에 접근하게 되면 일관성 문제가 발생할 수 있다. 커널은 ..
2024.01.17 -
프로세스 수행 상태 변화과정, 중기 스케줄러(=Swapper)
프로세스 수행 상태 변화과정 new 상태 프로세스가 시작되어 그 프로세스를 위한 자료구조는 생성되었지만, 아직 메모리 획득을 승인받지 못한 상태 ready 프로세스가 cpu를 할당받기를 기다리는 상태 프로세스가 cpu를 점유하면 당장 명령을 수행하는 단계로, ready queue에 저장된다. running 프로세스가 cpu를 할당받아 명령을 수행하는 상태 한번에 하나의 프로세스만 실행가능 blocked, sleep, wait cpu를 할당받더라도 명령을 수행할 수 없는 프로세스 상태(ex: i/o작업을 기다리는 등) waiting queue에 저장된다. suspended blocked blocked상태에 있던 프로세스가 중기 스케줄러에 의해 disk로 swap out(메모리를 뺏음)된다. suspende..
2024.01.17 -
PCB(프로세스 제어 블록), multi process?
pcb process가 현재 어떤 상태로 수행되고 있는지에 대한 총체적인 정보를 context라고 하는데, 이러한 context정보는 pcb에 저장한다. pcb는 운영체제가 프로세스를 표현한 자료구조로, pcb에는 프로세스의 중요한 정보가 있기때문에 일반사용자가 접근하지 못하도록 커널 메모리 영역안에 저장이 된다. pcb는 커널의 위치하며, 이 메모리 영역은 보호를 받으면서도 비교적 접근하기 편리하기 때문이다. pcb에 담기는 정보 pid 레지스터 값 레지스터값이 pcb에 담기는 이유 프로세스는 자신의 실행차례가 오면, 이전까지 사용한 레지스터값을 복원하여 다시 실행을 재개하기 때문이다. 즉, 자신의 실행차례가 오면, 이전까지 실행한 것을 재개하기 위해서! 프로세스 상태 실행, 준비, 봉쇄 running..
2024.01.17 -
프로그램, 프로세스, 프로세스 주소공간, 스레드
프로그램 코드를 컴파일한뒤, 하드디스크에 저장한 것 프로세스 실행파일(프로그램)이 RAM메모리에 적재되어 cpu를 할당받아 실행하는 것으로, 즉 실행중인 프로그램을 의미한다. 운영체제로부터 자원을 할당받는 작업의 단위 프로세스 주소공간 code 실행한 프로그램의 코드가 저장되는 영역으로, Read-Only영역으로 되어있다. 컴파일시에 결정된다. data 전역변수, static변수가 저장되는 메모리 영역 컴파일시에 결정된다. 초기화된 데이터는 data영역에 저장이 되고, 초기화되지 않은 데이터는 bss(Block Stated Symbol)영역에 저장이 된다. 실행도중에 변경될 수 있기때문에 Read-Write로 지정되어있다. stack 전역변수, 매개변수가 저장되는 메모리 영역 높은 주소 -> 낮은 주소로..
2024.01.17