운영체제 26

스레드 생성

자바 메모리 구조 메서드 영역(Method Area)  : 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다. 모든 실행코드. static, 공통 상수들. 스택 영역(Stack Area)  : 자바 실행 시, 하나의 실행 스택이 생성된다. 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함한다 힙 영역(Heap Area) : 객체(인스턴스)와 배열이 생성되는 영역이다. 가비지 컬렉션(GC)이 이루어지는 주요 영역이며, 더 이상 참조되지 않는 객체는 GC에 의해 제거된다. 스택 영역은 더 정확히는 각 스레드별로 하나의 실행 스택이 생성된다. 따라서 스레드 수만큼 스택이 생성된다. 지금은 스레드를 1개만 사용하므로 스택도..

운영체제 2024.11.22

컨텍스트 스위칭

컴퓨터의 멀티태스킹운영체제의 멀티태스킹을 생각해 보자. CPU 코어는 하나만 있다고 가정하자. 스레드 A, 스레드 B가 있다. 운영체제는 먼저 스레드 A를 실행한다. 멀티태스킹을 해야 하기 때문에 스레드 A를 계속 실행할 수 없다. 스레드 A를 잠 시 멈추고, 스레드 B를 실행한다. 이후에 스레드 A로 그냥 돌아갈 수 없다. CPU에서 스레드를 실행하는데, 스레드 A의 코드가 어디까지 수행되었는지 위치를 찾아야 한다. 그리고 계산하던 변수들의 값을 CPU에 다시 불러들여야 한다. 따라서 스레드 A를 멈추는 시점에 CPU에서 사용하던 이런 값들을 메모리에 저장해두어야 한다. 그리고 이후에 스레드 A  를 다시 실행할 때 이 값들을 CPU에 다시 불러와야 한다. 이러한 과정을 콘텍스트 스위칭이라고 한다.컨텍..

운영체제 2024.11.17

Thread - Scheduling,Thread

CPU 코어는 1개이고, 프로세스는 2개이다. 프로세스 A는 스레드1개 프로세스B는 스레드가 2개 있다. 프로세스는 실행 환경과 자원을 제공하는 컨테이너 역할을 하고, 실제 CPU를 사용해서 코드를 하나하나 실행하는 것은 스레드이다 단일 코어 스케줄링운영체제는 내부에 스케줄링 큐를 가지고 있고, 각각의 스레드는 스케줄링 큐에서 대기한다. CPU에 어떤 프로그램이 얼마만큼 실행될지는 운영체제가 결정하는데 이것을 스케줄링(Scheduling)이라 한다. 이때 단순히 시간으로만 작업을 분할하지는 않고, CPU를 최대한 활용할 수 있는 다양한 우선순위와 최적화 기법을 사용한다. 우리는 운영체제가 스케줄링을 수행하고, CPU를 최대한 사용하면서 작업이 골고루 수행될 수 있게 최적화한다.

운영체제 2024.11.17

Thread - process ,thread

프로세스프로그램은 실제 실행하기 전까지는 단순한 파일에 불과하다.프로그램을 실행하면 프로세스가 만들어지고 프로그램이 실행된다.이렇게 운영체제 안에서 실행 중인 프로그램을 프로세스 라 한다.프로세스는 실행 중인 프로그램의 인스턴스이다.  자바 언어로 비유를 하자면 클래스는 프로그램이고, 인스턴스는 프로세스이다.프로세스는 실행 중인 프로그램의 인스턴스이다. 각 프로세스는 독립적인 메모리 공간을 갖고 있으며, 운영체제에서 별 도의 작업 단위로 분리해서 관리된다. 각 프로세스는 별도의 메모리 공간을 갖고 있기 때문에 서로 간섭하지 않는다. 그 리고 프로세스가 서로의 메모리에 직접 접근할 수 없다. 프로세스는 이렇듯 서로 격리되어 관리되기 때문에, 하나의 프 로세스가 충돌해도 다른 프로세스에는 영향을 미치지 않는..

운영체제 2024.11.17

Thread - 멀티태스킹 + 멀티프로세싱

멀티태스킹만약 CPU가 매우 빠르게 두 프로그램의 코드를 번갈아 수행한다면, 사람이 느낄 때 두 프로그램이 동시에 실행되는 것 처럼 느껴질 것이다. (대략 0.01초(10ms) 단위로 돌아가며 실행한다.)  이 방식은 CPU 코어가 프로그램A의 코드를 0.01초 정도 수행하다가 잠시 멈추고, 프로그램B의 코드를 0.01초 정도 수행한다. 그리고 다시 프로그램A의 이전에 실행중인 코드로 돌아가서 0.01초 정도 코드를 수행하는 방식으로 반복 동작한다. 이렇게 각 프로그램의 실행 시간을 분할해서 마치 동시에 실행되는 것 처럼 하는 기법을 시분할(Time Sharing, 시간 공유) 기법이라 한다. 이런 방식을 사용하면 CPU 코어가 하나만 있어도 여러 프로그램이 동시에 실행되는 것 처럼 느낄 수 있다. 참고..

운영체제 2024.11.17

주소 바인딩

주소 바인딩프로그램의 명령어와 데이터를 기억장치에 적재할 때, 그것들의 기적장치 주소를 결정하는 것  컴파일 시간 (compile time) 바인딩컴파일 시간에 절대 코드(absolute code)를 생성한다.프로그램을 기억장치 내에 적재할 위치를 컴파일 시간에 결정함.적재 위치를 바꾸려면 다시 컴파일해야 한다.  적재 시간 (load time) 바인딩 컴파일 시간에 재배치 코드(relocatable code)를 생성한다.적재 시간에 적재할 위치를 결정함.미리 변환된 작업 사용  실행 시간 (execution time) 바인딩프로세스가 실행 중에 기억장치의 한 세그먼트로부터 다른 세그먼트로 이동될 수 있다.바인딩은 실행시간에 결정됨 -> 계속 달라질 수 있다. -> 맵핑 테이블 필요하다변환을 하면서 ..

운영체제 2024.06.14

교착상태

서로 물러서지 않고 양보를 하지 않아서 무한히 대기하는 상태한쪽이 양보를 해야 함(프로세스가 처리를 해줘야 한다) 교착상태: 프로세스들이 각자 자원을 점유하고 있음에도 다른 프로세스가 점유한 자원을 요청하여 무한하게 대기하는 상태하드웨어적 자원: CPU, 기억장치, 입출력 장치소프트웨어적 자원: 파일, 세마포어 각자 자원 유형은 여러개의 instance(사례)를 가질 수 있다자원을 사용하려면 요청->사용->해제 순서대로 교착상태는 다음 네 조건이 동시에 만족해야 한다.1. 상호배제 : 오직 한 프로세스만 자원을 점유할 수 있다2. 점유와 대기 : 하나의 자원을 점유하면서도 다른 자원에 대기하는 것3. 비선점: 점유된 자원은 강제 반환 X 오로지 프로세스가 작업을 마치고 자발적으로 반환4. 순환 대기 : ..

운영체제 2024.06.14

프로세스 동기화

병행 프로세스들이 서로 데이터를 주고 받으면서 수행될 때 프로세스간 동기화 필요 병행 프로세스들이 공유데이터를 접근할 때, 병행접근하면 데이터 일관성이 잘못될 수 있다. 따라서 일관성을 유지하려면 데이터접근을 순서화 하여야한다.  count ++ or -- 는 순서화하여 한번에 하나씩 수행.. 1/1/1/2/1/이렇게 할 경우 일관성이 잘못됨 N개의 프로세스가 공유데이터에 접근하고 각 프로세스는 공유데이틀 접근하는 코드 세그먼트를 갖고 있는데 이것을 임계구역이라고 한다. 임계구역은 순서화해서 수행해야한다. 중간난입이 불가능하여 오직 하나의 프로세스만 임계구역을 수행하여야 한다. 진입구역: 임계구역 들어가기전 허가 구하기 출구구역: 임계구역 수행을 끝낸다는 것을 알림 임계구역 문제 요구 조건 1. 상호배제..

운영체제 2024.06.14