CS

· CS/JAVA
레퍼런스 - 주소를 가르키는 변수 C에서 배열을 가르키는 주소(레퍼런스)는 배열의 0번째 인덱스의 주소지만 자바는 배열 이름의 레퍼런스 변수가 따로 존재하고 실제 배열은 다른 주소부터 시작됩니다. 자바에서 배열을 만들 때는 레퍼런스 선언을 해주어야 하고 레퍼런스 변수에 배열을 동적 할당하는 식으로 동작하기 때문에 배열 생성시 무조건 동적할당을 해야합니다. 배열 선언시엔 크기를 정하지 못하고 밑 그림 처럼 동적 할당으로 초기화 할 때 크기를 정해야합니다. 레퍼런스 변수는 동적 할당으로 만든 배열의 첫번째 인덱스 주소를 가르키게 됩니다. 2차원 배열은 행의 갯수 만큼의 레퍼런스 변수를 가지게 됩니다. 행의 갯수만큼의 레퍼런스를 가지고 있는 배열이 생성되고 그 배열의 각 인덱스는 각 행의 첫번째 인덱스 주소를..
· CS/OS
1. 새로운 메모리 공간 할당 2. 1의 공간에 프로세스 로딩 및 콜 스택 생성 3. 해당 PCB 초기화 4. 준비큐에 프로세스 넣기(실행 가능) 다른 프로세스를 생성하는 프로세스를 부모 프로세스(Parent Process)라 하고, 다른 프로세스에 의해 생성된 프로세스를 자식 프로세스(Child Process)라 한다. 프로세스의 부모-자식 관계들은 트리의 형태로 나타나게 된다. 대부분의 운영체제에서는 프로세스들을 구별하기 위해 각 프로세스들에게 유일성을 가진 정수 PID(Process Identifier)를 부여한다. 일반적으로, 프로세스는 CPU time, 메모리, 파일, 입출력 장치 등의 자원이 필요하다. 따라서 어떤 프로세스가 다른 프로세스를 하나 생성하면, 생성된 프로세스는 운영체제로부터 직접..
· CS/OS
Process Model Two state model 시분할 시스템에서, 프로세스는 주어진 time slice 동안 processor를 점유하여 running 상태로 변하고 할당이 끝나면 다시 not running 상태로 바뀝니다. 이렇게 프로세스의 상태를 두가지로 나누어 설명하는 것을 Two-State Process Model 이라고 부릅니다. dispacher는 scheduler 역할로 각 프로세스의 time slice에 맞게 프로세스 스위치를 해줍니다. 위 그림을 보면, ready queue에서 우선순위가 높은 프로세스를 dispatcher가 프로세서에 넘기는 것을 볼 수 있습니다. 하지만 two state process model은 A라는 프로세스가 실행 도중에 I/O request가 발생해서 n..
· CS/OS
Stack Memory - user level process 프로그램이 디스크에서 메모리에 올라와 실행가능해지면 프로세스 그러기 위해선 stack 필요 실행 순서를 정하기 위해서 excution sequence 여러 프로세스가 메모리 상에 존재하려면 프로세스마다 CPU에 데이터를 보내줄 주소가 필요한데 CPU는 매번 작업하는 프로세스를 바꾸므로 바꾸기 전 사용했던 주소들과 레지스터 상태들을 저장할 필요가 있다. 그걸 메모리 한 곳에 존재하는 stack이란 공간에 저장하게 된다. 레지스터에 저장하기엔 공간이 부족하다. (프로세스의 리턴 address가 무한히 늘어날 수 있음, 각종 프로세스의 레지스터 상태값) 위 예시를 보면 stack에 존재하는 정보들 중 하나인 return address 관점에서 sta..
· CS/OS
system call system call은 유저 모드에서 커널 모드의 특권 명령을 요청하는 함수이다. i/o interrupt와 같은 메모리 자원을 제어하고 수정할 수 있는 이벤트는 메모리 보호, 버그 프로그램, 악의적 자원 사용등 때문에 유저 모드에서 발생시킬 수 없다 따라서 유저모드에서 이벤트를 발생시키고 싶을 때는 해당 이벤트를 커널 모드에서 발생시켜 달라는 요청이 필요한데 그 요청이 바로 system call이다 system call을 사용하기 위해 각 언어에서 다양한 api를 만들었는데 C에서는 print가 write() 라는 system call을 하는 대표적인 API 이다 print를 실행하면 C 라이브러리에서 알아서 write에 필요한 인자를 입력하여 write라는 systemcall을 ..
· CS/OS
컴퓨터가 사용하는 두가지 시간 절대시간 - 평소 사용하는 시간 -> RTC(Real Time Clock) 하드웨어 사용 상대시간 - 어떤 프로그램이 시작되고 나서부터 system timer가 세는 시간 (from now, from event) 컴퓨터는 time driven system이다. system timer는 특정 hz마다 주기적으로 interrupt를 발생시킨다 -> PIT(Programmable Interval Timer) 하드웨어 사용 특별한 전역 변수를 생성해서 timer interrupt가 발생될 떄마다 +1 씩 증가시키는 방식 hz - 초당 진동하는 횟수 jiffies - 리눅스에서 timer interrupt가 발생될 때 1씩 증가하는 전역변수 (hz횟수) jiffies/hz = 초 단..
· CS/JAVA
자바의 태동 자바가 개발되기 전, 다른 프로그래밍 언어들은 소스파일을 컴파일하여 기계어로된 실행파일로 만들었습니다. 이렇게 기계어로 컴파일된 실행파일은 각 기기마다 기계어가 다르고, OS마다 기계어의 API가 다르고, 실행 파일 형식이 다르기 때문에 컴파일을 진행한 환경이 아닌 다른 환경에서는 컴파일된 파일을 실행할 수 없다는 단점이 있었습니다. 예를 들어 window에서 컴파일한 실행파일을 linux에서 실행하려면 해당 실행파일의 원래 소스코드를 재작성하고 linux에서 다시 컴파일 해야합니다. 자바는 위와 같은 단점을 극복하기 위해 JVM이라는 자바 바이트 코드를 실행할 수 있는 소프트웨어와 함께 등장했습니다. JVM 자바는 소스코드를 컴파일 할 때 해당 컴퓨터 환경에서만 실행시킬 수 있는 기계어가 ..
· CS/DataBase
Null value SQL문에서 Null이란 '값이 없음' 또는 '알 수 없는 값' 으로 두가지 의미를 가집니다. 만약 5 + null 이라는 식이 있다면 리턴값은 5가 아니라 5와 모르는 값의 합을 반환해야 하므로 다시 Null을 반환하게 됩니다. ID = null 이라는 식에서도 (=)기호는 대입이 아니라 비교 연산자이기 때문에 존재하는 값들끼리 비교를 하지 않고 특정 값을 null과 비교 하게되면 오류를 발생시킵니다. 만약 특정 tuple의 atrribute값이 null값인지 확인하고 싶다면 is null이라는 키워드를 사용하면 됩니다. 위 sql문은 월급이 기재가 되어있지 않은 교수들의 이름을 반환합니다. 하지만 위의 sql의 교수(instructor) 테이블에서 salary가 null값인 tup..
reko_
'CS' 카테고리의 글 목록 (4 Page)