분류 전체보기

· CS/OS
Memory allocation 더보기 Continuous memory allocation (연속할당) Uni programming Multi programming Fixed partition multi programming (FPM) Variable partition multi programming (VPM) Non continuous memory allocation -> Lecture 9 (비연속할당) Continuous Memory Allocation - 프로세스(Context)를 하나의 연속된 메모리 공간에 할당하는 정책 (프로그램, 데이터, 스택 등) 메모리 구성 정책 메모리에 동시에 올라갈 수 있는 프로세스 수 고려 메모리 분할 방법 고민 프로세스에게 할당하는 메모리 공간 크기 Uni prog..
· CS/OS
메모리(기억장치)의 종류 메모리(기억장치) 계층구조 block 디스크에서 메모리에 최소로 이동할 수 있는 단위 보조기억장치와 주기억장치 사이의 데이터 전송 단위 size: 1~4KB Word 주기억장치와 레지스터 사이의 데이터 전송 단위 size: 16~64bits (메모리에서 데이터를 64bits씩 읽는다) 레지스터의 크기가 word의 크기만큼 되어있다. => CPU가 몇 bit인지를 판단하는 기준이 된다. Address Binding 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑(mapping)하는 작업 (컴퓨터 공간안에 정수형int를 선언할 때는 변수크기만큼 크기를 잡는것이다. 메모리상에서 이를 보면 주소1000번~1003번까지 저장한다. 논리주소 a와 물리주소 1000과 묶는 작업이 필요..
제네릭을 왜 쓰는가? 바나나와 책을 저장하는 객체가 있다고 생각해보자 // Banana클래스와 Banana클래스를 담을 수 있는 Good1클래스 class Banana{} class Goods1{ private Banana banana = new Banana(); public Banana getBanana(){ return banana; } public void setBanana(Banana banana){ this.banana = banana; } } // Book클래스와 Book클래스를 담을 수 있는 Good2클래스 class Book{} class Goods2{ private Book book = new Book(); public Book getBook(){ return book; } public ..
· CS/OS
Deadlock 해결 방법 Deadlock prevention methods (교착상태 예방) Deadlock avoidance method (교착상태 회피) Deadlock detection and deadlock recovery methods (교착상태 탐지 및 복구) Deadlock Detection Deadlock을 허용하기 때문에 주기적으로 deadlock 발생 확인 확인하는 방법중 많이 사용하는 것이 Resource Allocation Graph (RAG) Resource Allocation Graph (RAG) 지난 포스트에서 Deadlock model인 State Transition Model을 알아보았는데 그 모델을 확장한 것이다. Deadlock 검출을 위해 사용 Directed(방향성..
쓰레드는 객체가 생성, 실행, 종료되기까지 다양한 상태를 가진다. 각 쓰레드는 Thread.State 상태로 정의되었다. Thread의 인스턴스 메서드인 getState()로 쓰레드의 상태값을 가져올 수 있다. Thread.State getState() Thread.State의 내부에는 6개의 문자열 상수(NEW, RUNNABLE, TERMINATED, TIMED_WAITING, BLOCKED, WAITING)가 저장되어 있다. NEW new 키워드로 쓰레드의 객체가 생성된 상태(start()전) RUNNABLE start() 이후 CPU를 사용할 수 있는 상태 다른 쓰레드들과 동시성에 따라 실행과 실행 대기를 교차함 TERMINATED run()메서드의 작업 내용이 모두 완료돼 쓰레드가 종료된 상태 (..
동기화: 하나의 작업이 완료된 후 다른 작업을 수행하는 것 비동기: 하나의 작업 명령 이후 완료 여부와 관계없이 바로 다른 작업 명령을 수행하는 것. 동기화의 필요성 멀티쓰레드를 사용할 때 동기화는 필요하다. 이유를 알아보자. 왼쪽의 step3도중 오른쪽 step1이 먼저 발생하면 결과는 5가 아닌 4가 나올 것이다. 동기화를 사용하지 않았을 때 문제가 발생된다. class MyData{ int data = 3; public void plusData(){ int mydata = data; try{Thread.sleep(2000);} catch (InterruptedException e){} data = mydata + 1; } } class PlusThread extends Thread{ MyData m..
쓰레드의 속성 종류 현재 쓰레드 객체 참조 값 얻어오기 객체를 참조할 수 없을 때 Thread클래스이 정적 메서드인 currentThread()메서드를 이용해 현재 쓰레드 객체의 참조값을 얻어올 수 있다. static Thread Thread.currentThread() 실행중인 쓰레드의 개수 가져오기 현재 실행중인 쓰레드 개수를 알고 싶을 때 사용 static int Thread.activeCount() 쓰레드의 이름 지정 및 가져오기 쓰레드에 이름을 지정. String setName(String name) 직접 지정하거나 자동으로 부여된 쓰레드의 이름을 가져올 때 사용 String getName() 쓰레드 객체의 속성 다루기 예제 public class ThreadPropertiesTest1 { pu..
자바 프로그램에서의 쓰레드 자바로 작성한 프로그램을 실행하면 메모리로 로딩돼 프로세스 상태가 된다. .class 파일을 실행하면 자바 가상 머신은 main 쓰레드를 생성한다. 즉, 프로그램이 처음 실행되면 시작 지점에서 main쓰레드 1개만이 존재한다. main()메서드에서 작성한 내용이 바로 이 main쓰레드에서 동작한다. mian쓰레드의 내부에서 2개 이상의 쓰레드를 생성해 실행하면 동시에 N개 이상의 쓰레드가 동작하게 되는데, 이를 멀티 쓰레드라고 한다. 멀티 쓰레드의 필요성 만약 FPS게임을 하고 있다고 가정하자 총을 연발로 5발을 쐈을 때 쏘는 화면과 발사 소리를 출력한 것을 나타낸 것이다. public class TheNeedForThread { public static void main(St..
· CS/OS
Deadlock 해결 방법 Deadlock prevention methods (교착상태 예방) Deadlock avoidance method (교착상태 회피) Deadlock detection and deadlock recovery methods (교착상태 탐지 및 복구) Deadlock Avoidance 시스템의 상태를 계속 감시 시스템이 deadlock 상태가 될 가능성이 있으면 해당 자원 할당 요청 보류 시스템을 항상 safe state (안전한 상태) 로 유지 Safe state 모든 프로세스가 정상적 종료 가능한 상태 (safe sequence가 존재하면 safe state이다.) Safe sequence 가 존재 하느냐로 판단함. Deadlock 상태가 되지 않을 수 있음을 보장 Unsafe ..
throws 예외를 처리하지 않고 예외처리의 의무를 호출한 메서드에게 전달한다. 예외를 다음과 같이 전달하면 된다. 예외 전가 구조 리턴 타입 메서드명(입력매개변수) throws 예외 크래스명 { // 예외 발생 코드 } a()메서드에서 b()메서드를 호출하고, b()메서드 내부에 예외가 발생할 수 있는 코드가 포함돼 있을 때를 살펴보자 void a(){ b(); // 1.호출 } // 2. 예외 처리 void b(){ try{ //예외 가능 블록 } catch (예외 클래스 타입 참조 변수) { //예외 처리 } } b()메서드가 스스로 예외를 처리했을 때 b() 메서드가 직접 예외 처리를 했다. 이때 a()메서드가 b()를 호출하여 사용하는데 문제가 없다. void a(){ try{ b(); // 1..
White Asher
'분류 전체보기' 카테고리의 글 목록 (12 Page)