운영체제(8) - 프로세스 동기화

less than 1 minute read

쓰레드

쓰레드란

프로그램 내부의 흐름, 맥을 뜻하며 프로세스보다 더 작은 단위.

멀티쓰레드

  • 한 프로그램에 2개 이상의 맥이 존재하는 것.
  • 맥이 빠른 시간 간격으로 스위칭 된다. 따라서 여러 맥이 동시에 실행되는 것처럼 보인다. simultaneous(실제로 동시에 실행)가 아니라 concurrent.

쓰레드 vs 프로세스

  • 한 프로세스에는 기본 1개의 쓰레드가 존재한다.

  • 쓰레드 구조
    – 프로세스의 메모리 공간 공유 (code, data)
    – 프로세스의 자원 공유 (file, i/o, …)
    – 비공유: 개별적인 PC, SP, registers, stack

  • 우리가 흔히 말하는 프로세스 스위칭은 쓰레드 스위칭이다.

class Test {
    public static void main(String[] args) {
        MyThread th = new MyThread();
        th.start();
        while (true)
            System.out.print("A");
    }
}

class MyThread extends Thread {
    public void run() { 
        while (true)
            System.out.print("B");
    }
}

쓰레드를 통해 A와 B가 섞여서 출력된다.

프로세스 동기화

엄밀히 말하면 쓰레드 동기화이며 프로세스 또는 쓰레드들이 수행되는 시점을 조절하여 서로가 알고 있는 정보가 일치하는 것을 의미한다.

공유된 자원에 동시에 접근한다면 데이터 불일치를 일으킬 수 있다. 따라서 서로에게 영향을 주는 프로세스들을 순서대로 실행시켜 이러한 문제가 일어나지 않게 해준다.

프로세스가 서로 아무런 관계가 없다면 Independent이며 서로 연관되어 있다면 Cooperating이라 한다. 서로 연관되어 있는 Cooperating이 더 많다.

Tags:

Categories:

Updated:

Leave a comment