본문 바로가기

ComputerScience

(48)
인터럽트 현대 운영체제는 대부분 인터럽트 기반이다. OS는 부팅이 끝난 후, 메인 메모리에 상주하는데 상시에는 아무것도 하지 않다가, 인터럽트가 발생했을 때 OS의 코드가 실행된다. 하드웨어 인터럽트 예시 : 마우스 움직임 => 프로세서에게 전기 신호 =>cpu는 하던 일을 멈추고 마우스의 인터럽트 서비스 루틴을 실행한다. 소프트웨어 인터럽트 명령어 중에 swi에 해당한다. 예시 : 외부프로그램에서 하드디스크 파일 읽기 명령 실행 => 소프트웨어 인터럽트 => os의 파일 읽기 코드 실행=>하드디스크안에 파일 읽음 즉, 하드디스크의 파일을 읽는 코드는 프로그램이 아니라 OS 코드 안에 있다. 내부 인터럽트 i=10,j=0 => i/j => cpu는 0으로 못나누기 때문에 DivideByZero 인터럽트 발생 =>..
Floating Point 과학적 표기법 353.33 = 3.5333 * 10^2 컴퓨터에서 소수점을 사용하는 방법 Normalized significand : 1.xyz * 2^w 부동소수점 표현 1bit : sign 8bit: exponent (bias : 127) : 지수분 음수 표현을 위해? 23bit : fraction 부동소수점 장점 표현할 수 있는 숫자의 범위가 커짐 부동소수점 단점 10진수 유효숫자가 줄어든다 소수점을 갖는 연산은 항상 조심하도록 한다 예제1 print(1.0+2.0==3) #True print(1.0+2.0==3.0) #True print(0.1+0.2==0.3) #False print(0.1+0.2) print(0.3) 예제2 부동소수점으로는 0.1을 정확히 표현할 수 없다 0.25,0.5등은 정..
컴퓨터연산 덧셈 interger addition overflow result가 range를 벗어나는 경우 carry하고는 개념이 다르다 c언어에서는 overflow 무시 Saturating operations overflow발생하면 최대값 return video white+white⇒black return하는게 자연스러움 곱셈 Multiplcation multiplicant,multiplier,product으로 구성 32bit(multiplicand) * 32bit 계산(alu) ⇒ 64bit 결과 기존 하드웨어 : ALU 64bit,multiplicand: 64bit 필요 개선된 multiplication 32bit*32bit 계산 ⇒ 64bit 결과 alu : 32bit, multiplicand : 32bit ..
운영체제 개론 운영체제 운영체제는 메모리에 올라간다. 컴퓨터의 프로세서에서 이를 읽어와 운영체제를 실행시킨다 booting 컴퓨터가 커지면 프로세서는 메인 메모리 중 ROM 메모리를 읽어서 실행한다. ROM은 메인 메모리 중 유일하게 비휘발성 메모리로, ROM 메모리에는 1.Post 프로그램(Power-on Self-Test) - 메인 메모리 용량 확인 - 키보드가 잘 꽂혀있는지 등등 확인 2.boot loader 실행 - 하드 디스크 안의 OS를 RAM에 올린다. OS 특징 os는 RAM에 상주한다. 이와 다르게 프로그램은 실행되었을 때 하드디스크에서 메모리에 올라가고 종료되면 메인메로리에서 삭제된다. OS 구성 kernel과 shell로 구성 - kernel : 메모리,cpu 관리 - shell : 명령 해석기 사..
Sorting 예제 및 array와 pointer비교 Procedure Swap void swap(int v[],int k) { int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } v in $a0,k in $a1,temp in $t0 1 swap: sll $t1 $a1,2 #t1 = k*4 : v에서 k번 째 주소를 찾기 위함 2 add $t1,$a0,$t1 #t1 = v+(k*4) : v의 주소 + 4* k byte 3 lw $t0 ,0($t1) # temp = v[k] 4 lw $t2 , 4($t1) # t2 - v[k+1] 5 sw $t2 0($t1) # v[k] = $t2 (v[k+1]) 6 sw $t0 4($t1) # v[k+1] = $t0 (temp) 7 jr $ra 1,2번 째 라인 : 우선 v의 ..
Compile Procedure C언어의 Compile 과정 Assembler Pseudo Instructions MIPS에는 없지만 Assemble에는 있는 명령어 move => add blt => slt, bne Object Module Assembler의 결과물 Machine Instruction(Binary code)로 구성 구성 Header Text Segment instructions Static data segment Relocation 정보 절대주소 Symbol Table 전역변수, external refs Debug info Static Linking Static Linking의 경우, 모듈 별로 코드를 모두 한번에 컴파일해서 하나의 실행파일을 만든다 단점 파일의 크기가 커질 수 있다 일부 모듈이 변경되면 새로 컴파일 ..
Quick sort,selection 정리(2) Quick Sort 분할 정복 기법 예시 시간 복잡도가 최악의 경우가 될 때를 생각해본다. 주어진 배열 [5,4,3,2,1] 을 작은 순으로 정렬한다. pivot은 배열의 마지막 원소로 설정한다 1번째 iteration : 1의 왼쪽인 5,4,3,2를 1과 비교한다. 결과 ⇒ 1의 왼쪽에는 원소가 없게 되고 오른 쪽에는 [5,4,3,2] 가 된다. ⇒[1,5,4,3,2] 2번째 iteration : 2를 피봇으로 [5,4,3,2]를 정렬한다. 결과 ⇒ 2의 왼쪽에는 원소가 없게 되고, 오른 쪽에는 [5,4,3]이 된다. ⇒ [1,2,5,4,3] 이런 식을 반복하다 보면 [1,2,3,4,5]가 얻어지고, 시간 복잡도는 O(N^2)이 된다. Quick Selection 목표 배열 내에서 K번 째로 큰 혹은 ..
Queue 큐의 정의 FIFO : Fisrt in First Out 즉, 먼저 들어온 애가 먼저 나간다 큐의 기본연산 enqueue : 큐에 넣는다 dequeue : 큐에서 뺀다 큐의 ADT 1. Init 2. Queue is Empty 3. Queue에 Push 4. Queue에서 Pop 큐의 구현 큐는 1. 배열 2. 연결리스트 형태로 구현할 수 있다. 배열기반 큐 1. 일반 배열 형태의 큐 큐에 A,B,C라는 원소가 들어있다고 하자. 이 때 Pop을 한 번 하면 큐의 Head가 앞으로 이동하는데, Head가 이동한 공간만큼은 메모리를 못쓰게 되므로 비효율적이다. 2. 원형큐 앞서 언급한 메모리 문제를 해결하기 위해 원형큐를 사용한다. 하지만 이 때도 문제가 발생하는데, Queue가 꽉 찼을 때와 , Queue..