오늘할일
시험과목(운영체제) 직전공부
오늘한일
동계현장실습 문의메일: 기업체 선정중이고 선정 후 학과 공지 예정
저녁 5시반까지 잠을 잤다... 지금이 자연스럽게 아침이라 생각하고 새벽까지 공부를 야무지게 해보쟈
데이터통신 요약정리 완료(7주차) 18:04
운영체제 요약정리 완료(7주차) 19:00
자바 끝. 되새김 퀴즈, 코드정기 20:11
초기 자바 모토: WORA Write Once Run Anywhere
main에서 내부변수 접근: 객체를 만들어 객체를 통해 접근
객체타입의 변수는: 참조변수!!
char성질: 2바이트 unsigned
float=3.2: 기본이 double이라 f나 F리터럴 붙여야함
클래스변수: 스태틱 변수를 의미
클래스 변수 접근법 3가지: 클래스.변수, 인스턴스.변수, 변수(내부에서)
JVM 메모리 3구조: 메서드영역_.class를 읽고 내부 클래스 정보(static)들을 저장, 힙영역: 객체 인스턴스를 저장, 호출스택: 함수 실행을 위한 공간
GC호출함수: System.gc();
자바 배열 3가지 선언: int[] apples, int apples[], int apples[]=new int[4]
길이얻는법: .length()가 아닌 .length 배열의 크기는 고정. 가변은 List
Array와 List 문자열출력: List는 그냥 출력 Array는 Arrays.toString(앙)사용. Arrays's'인거 주의
Scanner메서드(읽을게있나요?): .next(), .nextInt(), .nextFloat(), .nextLine(), .hasNext()
상위 클래스 생성자 호출법: super();
콘크리트클래스 메서드 가능한 표기 두가지: abstract void 함수이름(); void 함수이름(){구현}
인터페이스 변수와 메서드 앞에 생략된 키워드: 변수는 public static final, 메서드는 public abstract**
인터페이스에서 구현 메서드 정의 두가지: default와 static을 이용해 정의가능. 전자는 그냥 사용하면 되고 static은 인터페이스 이름이나 상속한거 통해서 접근
패키지 관리규약: 역도메인 방식
final을 메서드에 달때와 클래스에 달 때: 오버라이딩 금지, 상속금지
클래스에 사용가능한 접근제한자:추상클래스를 의미하며 public과 default
커스텀 예외객체: 생성할 때 msg받아 저장하고 public String getMessage()로 리턴시키면 됨.
전반적으로 오버라이딩 시 @Override붙이면 좋다.
코드 예제 주의할 부분: Menu의 List은 해당 메뉴의 옵션 전부, Order의 List은 주문한 메뉴에서 선택한 옵션
public String toString() {
return String.format("%s/%d원", name, price);
}
System.out.printf("[%d]%s/ ", i++, op);
전체 키오스크 메인함수
public KioskApp() {
loadData(); //데이터를 로드하여 설정된 menu들을 menus에 저장. 해당 menu들은 getOptions로 옵션정보역시 가지고있음
showMenu();
System.out.print("# 메뉴를 선택 하세요: ");
int sel = scan.nextInt();
Menu menu = menus.get(sel); //결정한 메뉴 정보를 가져온다.
order.setMenu(menu); //주문에 해당 메뉴를 설정하고
optionSelect(menu); //메뉴가 가지고있는 옵션을 유저가 선택하면 order에 selOptions로 설정해둔다.
checkOrder(); // 주문 내역 출력. 선택메뉴, 옵션, 총액.
}
옵션 선택함수
private void optionSelect(Menu menu) {
System.out.printf("%s 선택: 옵션을 선택하세요(콤마구분)!!\n", menu);
int i = 0;
for (Option op : menu.getOptions()) { //메뉴의 옵션을 출력해주고
System.out.printf("[%d]%s/ ", i++, op);
}
System.out.print("\n # 옵션 => ");
String optionSelect = scan.next(); //골랐으면 김가루,치즈가루
for (String op : optionSelect.split(",")) { //입력값을 ,기준 split하여
order.getSelOptions().add(menu.getOptions().get(Integer.valueOf(op))); //정수형으로 변경한 뒤 해당 순서의 옵션을 메뉴에서 가져오고, 주문의 옵션리스트에 추가한다.
}
}
private void checkOrder() {
int total_price=0;
System.out.println("주문내역 목록입니다.");
System.out.printf("주문하신 메뉴는 %s이며 옵션으로는 ", order.getMenu());
total_price+=order.getMenu().getPrice(); //가격계산. 메뉴의 가격과
for(Option op: order.getSelOptions()){ //주문정보에 선택한 옵션들을 순회하며 가산.
System.out.printf("%s ", op);
total_price+=op.getPrice();
}
System.out.println("을 선택하셨습니다.");
System.out.printf("총 결제금액은 %d입니다.", total_price > 0? total_price : 0);
}
``
데이터 통신 직전공부 완료...
Checksum은 1byte xor Internet checksum은 2byte 합하고 1보수 붙임. 검사시 더했을때 FFFF나오면 성공
슬라이딩 윈도우 시점별 그림
WAN의 HDLC프레임 구조 및 Control(ISU)별 신호...화이팅
ㄴN(S), N(R), S, M, P/F, RR, RNR, REJ, SREJ, SNRM, SABM, UA, DISC
CSMA/CD
LLC의 Ethernet 프레임 구조, TokenBus 구조, TokenRing구조
CSMA/CA(with RTS CTS)
데이터링크계층 장비: 브릿지, 스위치, Dummy HUB, Switch HUB
혼잡제어 암묵적 혼잡신호는 TCP에서 사용
라우팅 결정시점: datagram은 packet단위, virtual circuit은 session단위
Nonadaptive 라우팅 알고리즘: Shortest Path, Flooding
Adaptive 라우팅 알고리즘: Distance Vector(3step), Link State(5step)_주관식***
운영체제 직전공부 완료... 02:22
시스템호출 시 과정:
부팅과정:
계층적 구조가 너무 많아도 성능 저하:
크롬의 3가지 프로세스:
프로세스 종료 시 parent의 abort()도 정상종료로 분류. 이때 운영체제마다 회수 순서가 다른데 대부분 부모회수하고 자식회수하며, 모바일의 경우 덜중요한거부터 회수
프로세스 내부 구조, 스택 내부구조.
TCB(스케줄링 정보, 프로세서 시간, 계정정보)와 PCB내부 구조. 프로세스 말고 프로그램 카운터다.
프로세스 상태!!! (feat. 스레드 상태)
hybrid-level threading의 thread생성은 유저영역에서 시작.
pthread_create(&p_thread[0], NULL, thread1, NULL); //뒤에는 공유 자원 포인터
pthread_join(p_thread[0], (void**)status);
암달의 법칙(병행성): 1/{q + p/n}
5주차_동기화
1. 공유변수 1개_Lockstep Synchronizatrion Problem왓다갓다
2. 공유변수 2개_CPU동시 실행 시 오류
3. 공유변수 2개 양보_Deadlock
4. Dekker's Algorithm: turn변수로 추가확인
5. Peterson's Algorithm: turn을 미리 양보
semaphore V(S)와 P(S)의 일반화. S를 -1부터 시작하고 V가 작업끝 P가 기다리기_Spinlock문제: sleep으로 해결
ㄴDining Philosopher Problem: PP먹기VV
6주차_IPC
LPC, APC, RPC
shm_open, ftruncate, mmap, sprintf
int ipc_pipe[2]; pipe(ipc_pipe); write(pipe_child, buff, strlen(buff));
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&mutex);
7주차_Deadlock
-예방: 상호배제, 점유와대기->한번에, 비선점->압수, 원형대기->순서
-회피: 자원할당그래프, 은행가알고리즘, 안전&비안전 상태
-탐지: wait-for graph활용알고리즘, 은행가변형(request) 초기식 주의
-복구: 중단, 자원회수(safe롤백 프로세스 재시작, 기아상태 롤백 비용함수?)