분류 전체보기 130

6. Arithmetic for Computer

Integer Addition 정수 덧셈 연산을 진행할 때 조심해야 할 것이 오버플로(overflow)입니다. 오버플로는 bit 범위를 벗어나는 경우를 말합니다. 양수와 음수를 더하는 경우에는 발생하지 않고 양수 두 개를 더해 sign bit이 1이 되거나 음수 두 개를 더했는데 sign이 0이 되는 경우에 발생하는 것입니다. 오버플로가 발생했을 때 프로그래밍 언어마다 처리하는 방식이 다릅니다. C언어의 경우 오버플로를 무시하기에 프로그래머들이 발생하지 않도록 해야 합니다. Arithmetic for Multimedia 그래픽이나 음성을 처리하는 경우 8-bit, 16-bit 데이터를 많이 처리하게 됩니다. 64-bit adder를 사용하는 경우 8-bit를 8개, 16-bit을 4개 모아서 64 bit..

5. Instructions

위 코드는 bubble sort c코드입니다. 이 코드를 어셈블리어로 바꿔보겠습니다. 각각의 변수들을 위 사진과 같은 레지스터에 매핑했을 때 아래와 같은 코드가 나오게 됩니다. integer array 이까 개수만큼 k를 곱하여 어레이를 만들고 v와 더해 t1 레지스터에 넣습니다. 이러면 v [k] 어레이의 시작 주소가 t1 레지스터가 됩니다. 이후 v [k+1] 값을 t2에 넣습니다. 다음으로는 Non-leaf 예제에 대해서 알아보겠습니다. bubble sort는 기본적으로 2개의 loop가 필요합니다. 이 경우에는 코드가 길어집니다. inner loop와 outer loop 2개가 존재하며 아래에서 5번째 줄에서 swap function을 부르는 것을 볼 수 있습니다. Effect of Compile..

4. Instructions

Six Steps in Execution of a Procedure 위 6단계는 프로세서에서 함수를 처리할 때 진행하는 동작으로 대부분의 프로세서가 이 6단계를 거칩니다. 첫 번째로 caller가 callee가 액세스 할 수 있는 곳에 argument를 가져다 둡니다. MIPS에서는 argument가 a0 ~ a3까지 4개의 레지스터를 통해 전달됩니다. 그다음 caller가 callee에게 control을 넘깁니다. 이제 callee가 실행되기 위해서 스택 공간에 메모리를 할당받습니다. 이후 callee가 일을 진행하고 끝나면 caller가 액세스할 수 있는 곳에 return value 값을 가져다 둡니다. MIPS에서는 v0 ~ v1으로 두 개의 value register를 사용합니다. 마지막으로 ca..

3. Instructions: Language of the Computer

명령어 집합(Instruction set)은 컴퓨터에서 사용하는 명령어들의 집합으로 서로 다른 컴퓨터는 다른 명령어 집합을 사용합니다. 하지만 대부분의 경우에 공통된 특징을 많이 가지고 있습니다. 이 책에서 선택한 명령어 집합은 MIPS이며 MIPS의 instruction set은 다른 명령어 집합에 비해서 간결하고 쉽게 배울 수 있습니다. ISA는 Instruction Set Archtecture의 약자입니다. ISA는 lowest level software인 system software나 운영체제 간의 interface 역할을 해줍니다.(필요한 정보들을 instruction에 담아서 cpu에 주면 해당 instruction을 실행함) ISA는 같은 소프트웨어를 실행할 때 성능과 비용에 따라 다른 구현..

2. The Power wall

Wall에는 Power Wall과 Memory Wall가 존재합니다. clock rate는 2004년도까지는 급격하게 증가하지만 그다음부터는 거의 정체되어 있습니다. (clock rate가 증가하면서 전력 소모도 급격히 증가했지만 지금은 안정됨) clock rate를 증가시키면 전력 소모가 증가하게 되는데 프로세서가 발전하면서 필요 전력량을 더 이상 높일 수 없을 정도로 높아진 발열 문제를 겪고 있기 때문에 현재는 clock rate를 증가시키는 방법이 아닌 전압을 낮춰서 트랜지스터를 더 많이 집적하거나 클럭을 높이는 방식으로 성능을 개선하고 있습니다. $$Power = Capacity\,Load \times Voltage^2 \times Frequancy$$ 전력 소모를 구하는 공식입니다. 보시면 전압..

1. Performance

컴퓨터 기술을 빠르게 발전하고 있는데 그 원동력은 무어의 법칙으로 설명이 가능합니다. 무어의 법칙은 특정한 싱글 칩에 들어가는 트랜지스터의 수가 매 2년마다 2배씩 증가한다는 법칙입니다. (실제로는 2배보다 더 크게 증가했습니다, 로그 스케일 함수처럼 증가) 과거에는 많은 연산량을 가진 문제들에 대해서는 해결하지 못했지만 컴퓨터 성능이 발전하면서 새로운 애플리케이션들이 등장하고 있습니다. 컴퓨터는 크게 2가지로 나눌 수 있습니다. 첫 번째가 개인용 컴퓨터(Personal computer)로 가격 대비 성능에 민감하다는 특징이 존재하고 두 번째가 서버 컴퓨터(Server computer)로 고가에 대용량이며 고성능입니다. 최근에는 임베디드 컴퓨터(Embedded computer)들이 많이 보급되고 있습니다..

30. Evolution of File system

Fast File System (FFS) 초창기 unix file system이 제어하는 스토리지가 디스크라는 사실을 인지하지 못해 seek overhead가 발생했던 것을 개선하기 위해 개발되었습니다. 우선 레이아웃 포맷을 설정하는 것이 중요합니다. 기존 indoe block, data block이 사라지고 cylinder group 이라는 블록이 생겼습니다. superblock에는 파일 시스템 전체에 대한 메타 데이터 정보가 들어있습니다. 이 superblock이 1개만 존재할 시 reliablity 문제가 발생하기 때문에 superblock에 대한 복사본을 cylinder group 하나하나에 두게 됩니다. 이를 통해 superblock의 정보가 cylinder group 개수 만큼 추가로 더 존재..

CS/Operating System 2024.02.05

29. Reliability

Reliability 파일 시스템에서 퍼포먼스와 같이 중요한 요소가 reilability입니다. file system reliability을 한 단어로 표현하자면 data persistency라고 할 수 있습니다. 스토리지 디바이스가 비휘발성(non volatile) 메모리이기 때문입니다. 파일에다 어떤 데이터를 쓰면 그 데이터는 스토리지 디바이스에서 계속 보존되게 됩니다. 언제 읽더라도 일관된 내용을 얻어올 수 있는데 이렇게 consistency를 유지한다는 것은 어려운 일입니다. 오랜 기간 동안 여러 가지 측면에서 조건들이 다 만족돼야 하기 때문입니다. 시간이 길어지면 스토리지 디바이스에서 하드웨어적인 fault가 발생하거나 또는 전원이 꺼지는 문제가 발생할 수 있습니다. 이때 우리가 메인 메모리에 ..

CS/Operating System 2024.02.05

28. Free Block Management

Disk block을 파일에게 allocation 하려면 가용 가능한 free block이 어떤 것들이 있는지 빠르게 알 수 있어야 합니다. 이런 문제를 Free Block Management라고 부릅니다. Free List Free list는 이 문제를 해결하기 위한 방법 중 하나로 과거에는 굉장히 단순하게 구현할 수 있어 많이 사용되었지만 이제는 너무 단점이 많아서 거의 사용하지 않습니다. Linked File Structure와 유사하게 free block들을 전부 링크를 달아서 링크드 리스트로 만드는 방법입니다. 어떤 파일이 블록 3개를 요구하는 경우 링크드 리스트에서 첫 번째 free block을 따주고 세 번째 블록까지 전달해 줍니다. 이렇게 block by block allocation을 지..

CS/Operating System 2024.02.04

27. File Structures

average accress time을 최소화하는 것에 이어 file structure를 정해보겠습니다. OS에 존재하는 대부분의 파일은 굉장히 크기가 작습니다. 큰 파일의 수는 적지만 디스크 스페이스의 대부분의 용량을 차지합니다. 우리가 실행하는 I/O operation은 주로 이러한 large data file에 대해서 일어납니다. 이를 통해서 파일 시스템을 설계할 때 large file에 대한 좋은 퍼포먼스가 필요하다는 것을 알 수 있습니다. 이러한 large file의 대부분은 멀티미디어 콘텐츠 파일로 이 파일에 액세스가 느려지면 유저 perception이 나빠지게 됩니다. large file을 위한 file structure를 설계하는 방법은 옵션이 그렇게 많지는 않습니다. linked file..

CS/Operating System 2024.02.04
반응형