혼공학습단 59

[혼공학습단 10기][혼공자] 스레드 제어

❗️start() 메소드를 호출 하면 바로 실행되는 게 아니라 실행 대기 상태가 됨 운영체제는 실행 대기 상태에 있는 스레드 중 하나를 선택하여 실행 상태로 만듦 스레드 상태 - 실행 대기 상태 ↔︎ 실행 상태 - 실행 상태 → 일시 정지 상태 - 일시 정지 상태 → 실행 대기 상태 ✏️ 스레드 상태 영어 표기 실행 대기 상태: Runnable 실행상태: Running 실행이 멈춘 상태: Terminated 스레드 상태 제어 실행중인 스레드의 상태를 변경한다. 이때 상태 변화를 가져오는 메소드를 파악해야 한다. interrupt() : 일시 정지 상태의 스레드에서 InterruptedException을 발생시켜 예외 처리 코드(catch)에서 실행 대기 상태로 가거나 종료 상태로 갈 수 있도록 한다 sl..

[혼공학습단 10기][혼공컴운] 교착 상태

✓ 교착 상태 Deadlock 두 개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다려서 그 어떤 프로세스도 더 이상 진행할 수 없는 상태이다. 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상을 의미한다. ✏️ 식사하는 철학자 문제 dining philosophers problem 계속 생각을 하다가 왼쪽 포크가 사용 가능하면 집어 든다 계속 생각을 하다가 오른쪽 포크가 사용 가능하면 집어든다 왼쪽과 오른쪽 포크를 모두 집어들면 정해진 시간동안 식사를 한다 식사 시간이 끝나면 오른쪽 포크를 내려 놓는다 오른쪽 포크를 내려 놓은 뒤 왼쪽 포크를 내려 놓는다 다시 1번 부터 반복한다 순서대로 식사를 한다면 문제가 없지만 만약 모든 철학자가 동시에 포크를 집어 식사를 하려고 한다면 그 어떤 철학..

[혼공학습단 10기][혼공자] 4주차 미션

✏️ 진도: Chapter 12 (스레드) 1. 멀티스레드 2. 스레드 제어 📖 기본 미션: p. 550 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 캡처하기 ❗️교재에 나와 있는 [직접 해보는 손코딩]대로 써보면 다음과 같이 '작업 내용을 저장함.'이 두 번만 출력된다. 0초 1초 - "작업 내용을 저장함." 출력 2초 - "작업 내용을 저장함." 출력 3초 - "메인 스레드 종료" 출력 ❗️그러나 save()메소드의 실행위치를 바꾸면 교재의 실행결과 처럼 '작업 내용을 저장함'이 세 번 출력된다. 0초 - "작업 내용을 저장함." 출력 1초 - "작업 내용을 저장함." 출력 2초 - "작업 내용을 저장함." 출력 3초 - "메인 스레드 종료" 출력 📚 선택 미션: p. 539 문제 2번 풀고, 풀..

[혼공학습단 10기][혼공컴운] 프로세스 동기화

✓ 동기화란 ✏️ 프로세스 동기화: 프로세스들 사이의 수행 시기를 맞추는 것 - 실행 순서 제어를 위한 동기화: 프로세스를 올바른 순서대로 실행하기 위한 동기화 - 상호 배제를 위한 동기화: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 위한 동기화 💡 생산자와 소비자 문제: 생산자 프로세스와 소비자 프로세스가 제대로 동기화되지 않아 발생하는 문제. 예상치 못한 결과나 실행 중 오류가 난다. - 공유 자원 shared resource: 프로세스들이 공유하는 자원. (전역변수, 파일, 입출력장치, 보조기억장치 등) - 임계 구역 critical section: 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역 ❗️레이스 컨디션 race condition: 잘못된 실행으로 인해 ..

[혼공학습단 10기][혼공자] 멀티 스레드

⬇️ 프로세스와 스레드에 대해 알아보기 ⬇️ [혼공학습단 10기][혼공컴운] 프로세스와 스레드 ✓ 프로세스 개요 ✏️ 프로세스: 보조기억장치에 저장되어있는 프로그램을 메모리에 적재하고 실행하는 과정 포그라운드 프로세스: 사용자가 보는 앞에서 실행되는 프로세스 백그라운드 프로 hianzhi.tistory.com ✏️ 멀티 프로세스: 각 프로세스는 서로 독립적. 하나의 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 미치지 않는다 ✏️ 멀티 스레드: 하나의 프로세스 내부에 생성. 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수 있어 예외 처리가 중요하다. 자바의 모든 어플리케이션은 메인 스레드가 main()메소드를 실행하면서 시작한다. 이때 메인 스레드는 멀티 스레드를 생성해서 멀티 태스킹을..

[혼공학습단 10기][혼공컴운] CPU 스케줄링

✓ CPU 스케줄링 개요 ✏️ CPU 스케줄링: 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 프로세스 우선순위 입출력 집중 프로세스 I/O bound process: 입출력 작업(입출력 버스트)이 많은 프로세스. 대기 상태에 더 많이 머무름 CPU 집중 프로세스 CPU bound process: CPU 작업(CPU 버스트)이 많은 프로세스. 실행 상태에 더 많이 머무름 💡 입출력 집중 프로세스가 우선순위가 높다. 입출력 집중 프로세스를 가능한 빨리 실행시켜 입출력장치를 끊임없이 작동시키고, 그 다음 CPU 집중 프로세스에 집중적으로 CPU를 할당하는 것이 더 효율적이기 때문. 스케줄링 큐 준비 큐 ready queue: CPU를 이용하고 싶은 프로세스들이 서는 줄 대기 큐 wa..

[혼공학습단 10기][혼공자] 기본 API 클래스

Java API Document Java Platform, Standard Edition Documentation - Releases Java Platform, Standard Edition documentation, current and previous releases docs.oracle.com ✓ java.lang 패키지 1) Object 클래스: 최상위 부모 클래스 - equals(): 객체 비교 true, false - hashCode(): 객체 해시 코드(객체를 식별하는 하나의 정수값) ✏️ 컬렉션 프레임워크: HashSet, HashMap, Hashtable이 두 객체가 동등한지 비교하는 방법 hashCode() 메소드 실행하여 리턴된 해시코드 값이 같은지 본 다음 해시 코드값이 같다면 eq..

[혼공학습단 10기][혼공자] 상속 / 타입 변환과 다형성 / 추상 클래스

✓ 상속 class 자식클래스 extends 부모클래스 { ... } - 여러 개의 부모 클래스를 상속할 수 없다. - 부모 클래스 중 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. - 서로 다른 패키지에서 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외된다. super() 자식 생성자를 직접 선언하고 명시적으로 부모 생성자를 호출하는 방법 super.method2() 이런식으로도 사용 가능하다 자식클래스 ( 매개변수선언, ... ) { super(매개값, ... ); ... } 예시: // 부모 클래스 public class People { public String name; public String ssn; public People(String..

[혼공학습단 10기][혼공컴운] 4주차 미션

✏️ 진도: Chapter 09 ~ 11 (운영체제 / 프로세스와 스레드 / CPU 스케줄링) 1. 운영체제의 큰 그림 2. 프로세스와 스레드 3. CPU 스케줄링 📖 기본 미션: p. 304의 확인 문제 1번 풀고 인증하기 📚 선택 미션: 준비 큐에 A,B,C,D 순으로 삽입되었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당받는지 풀어보기 ✅ 선입 선처리 스케줄링 알고리즘은 큐에 삽입된 순서대로 프로세스들을 처리하는 스케줄링 방식이기 때문에 답은 "A-B-C-D"이다.

[혼공학습단 10기][혼공컴운] 프로세스와 스레드

✓ 프로세스 개요 ✏️ 프로세스: 보조기억장치에 저장되어있는 프로그램을 메모리에 적재하고 실행하는 과정 포그라운드 프로세스: 사용자가 보는 앞에서 실행되는 프로세스 백그라운드 프로세스: 사용자가 보지 못하는 뒤편에서 실행되는 프로세스 사용자와 직접 상호작용하는 백그라운드 프로세스 사용자와 상호작용하지 않는 백그라운드 프로세스: (유닉스) 데몬 daemon, (윈도우) 서비스 프로세스 제어 블록 PCB - 프로세스와 관련된 정보를 저장하는 자료 구조. - 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리. 프로세스에 CPU를 비롯한 자원을 배분 - 커널 영역에 생성됨. 프로세스 생성 시 만들어지고 실행이 끝나면 폐기된다. - PCB에 담기는 정보 프로세스 ID (PID): 특정 프로세스를 식별하기 위해 ..

320x100