출처: https://3months.tistory.com/307 [Deep Play]

4-1 19

Java VS Kotlin

nullable, nullsafe val b: Int? =100 // nullable val c: Int = 100 // nullsafe b?.sum() // null 일 경우 실행하지 않음 c.sum() // 애초에 null safe 함 Kotlin은 변수를 선언할 때 null이 들어올 수 있는 nullable 방식과 들어 올 수 없는 nullsafe 방식이 있다. apply //Kotlin val person=Person().apply{ firstName="Fast" lastName="Campus" } //Java Person person = new Person(); person.firstName = "Fast"; person.lastName = "Campus"; Apply는 객체생성을 쉽게 해준다...

Chapter 1 : Power, Integrated Circuit

Power 기술이 발전함에 따라 Clock Rate는 높아지고 전력사용량이 기하급수적으로 늘어났다. CMOS IC에서 Power는 두가지로 분류된다. Dynamic power : 계산 할 때 드는 전력 Static power : 누수 전력 과거에는 Dynamic power를 줄이는 것에 중점을 두었지만 요즘은 Static power를 줄이는 것에 기업이 더 큰 관심을 쏟고 있다. Dynamic power를 어떡하면 줄일 수 있을까? CPU의 Capacity, Voltage, frequency를 15%를 줄였더니 Power consumption이 50%가까이 줄었다. 성능 저하대비 전력소모량이 훨씬 줄었으므로 CPU성능을 무조건 좋게하는 것 보다는 적당한 것이 좋다. Power를 늘리면 CPU의 성능을 늘..

Process Control

System Call Error Handling 당연히 System Call을 할 때 Error가 발생할 수 있기 때문에 Error 처리를 해줘야 한다. ※System call에서 Exception만이 void return 값을 갖는다. Creating and Terminating Processes Process state는 4가지가 있다. Running - 현재 CPU에 의하여 실행되고 있는 상태이다. Waiting - Scheduling이 된 상태로 대기 중인 상태이다. Blocked (Stopped) - Scheduling이 되지 않은 상태로 Signal이 와야 Scheduling이 된다. Signal이 오지 않는다면 Scheuling이 될 수 없다. Terminated - 다시는 실행되지 않을 상..

Chapter 1 : CPI( Cycles Per Instruction )

CPI CPI는 말 그대로 한 Instruction을 읽을 때 돌아야 하는 Cycle의 수이다. 다른 종류의 Instruction마다 필요한 Cycle의 수는 일정하지 않고 다르다. 예를 들어 Add $1,$2,$3은 1개의 Cycle이 필요하다면, beg $1,$2, 100은 2개의 Cycle이 필요할 수 있다. 따라서 CPU Time을 나타날 때 사용되는 Clock Cycles와 CPI의 엄밀한 정의는 다음과 같다. 즉, CPU Time을 표현할 때 쓰는 CPI는 Avg.CPI라고 이해하는 것이 좋다. 예시를 통해 더 자세히 알아보자. Class A의 instruction을 읽을 때는 1개의 Cycle, Class B는 2개, Class C는 3개의 Cycle이 필요하다는 것이다. ( 한 개의 ins..

Chapter 2 Relation, Key

Relation Relation은 DB에서 Table(표)과 같은 의미로 쓰인다. Relation schema는 Relation을 속성과 속성들의 도메인을 나타낸다. R = (A1,A2,...,An) 로 표현한다. 위는 Instructor Relation의 예시이다. Instructor Relation schema 는 Instructor = { ID, name, dept_name, salary } 이다. Relation를 구성하는 tuple은 정렬되어있지 않다 Database는 Data가 추가되거나 제거되기 때문에 그 상태가 계속 변한다. 이런 Database의 한 순간을 Database instance라고 한다. (Database instance는 변하지 않는다.) Key Key는 Relation에서 ..

Processes

Processes Process는 program이 메모리에 올라가 CPU가 접근 할 수 있는 상태를 의미한다. Program이라고 하면 안되고 Processor이라고도 하면 안된다. (Processor는 CPU이다.) Process는 두 가지 추상적인 개념을 program에 부여한다. Logical control flow 각각의 프로그램이 CPU를 독점적으로 사용는 것으로 착각한다. OS가 context switch를 해주기 때문에 가능하다. Private address space 각각의 프로그램이 메인 메모리를 독점적으로 사용하는 것으로 착각한다. OS가 virtual memory를 제공해주기 때문에 가능하다. Logical control flow와 Private address space 때문에 CPU..

Chapter 1 : Relative Performance, CPU time

Relative Performance Performance는 1/execution time으로 정의할 수 있다. 그렇다면 "X는 Y보다 n배 빠르다"를 어떻게 표현할 수 있을까? 위 표현은 x의 performance / y의 performance로 나타낼 수 있고 performance는 excution time의 역수이므로 위와 같이 나타낼 수 있다. 예를 들어 A의 execution time은 10s B의 execution은 15s라면 A는 B보다 15/10=1.5배 빠르다고 할 수 있다. 실행시간(Execution time)은 Elapsed time과 CPU time으로 나눌 수 있다. Elapsed time은 시스템이 프로그램을 처리하는데 드는 총 시간을 의미한다.( Processing, I/O, ..

Exceptional Control Flow, Exception

Control Flow Processor는 한 번에 한 가지 일만 처리할 수 있다. 실행되었을 때부터 종료될 때까지 CPU는 그저 instruction들을 순서대로 읽을 뿐인데 이 순서를 Control Flow라고 한다. 항상 instruction을 순서대로 읽으면 좋겠지만 당연하게도 정해진 순서를 바꿔야 하는 경우가 발생하게 된다. Program state에서 Jumps, branches, call, return 등을 사용하여 프로그래머가 의도적으로 이 control flow를 바꿀 수 있다. 하지만 data가 disk나 network adapter에서 오는 경우, divides by zero가 발생하는 경우, 사용자가 Ctrl-C를 누르는 경우, System에 할당된 시간이 다 된 경우 등 Syste..