CS/OS

· 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/OS
OS는 kernel, system utility, shell 이렇게 3가지 소프트웨어를 가지고 있습니다. OS의 구성 kernel - why use kernel 커널은 OS의 핵심적인 기능을 수행하는 코드로, 사용자가 컴퓨터 하드웨어를 어떻게 사용할 것인가를 결정해줍니다. 사용자가 프로그램을 실행시킨다는 것은 다음과 같이 세분화할 수 있습니다. 먼저 프로그램은 CPU에 계산을 명령하는 op-code(instruction)의 집합입니다. 그 op-code들은 disk에 존재하고, 그 데이터를 memory로 이동시켜야 CPU와의 요청과 응답을 빠르게 주고 받을 수 있습니다. 이 때 커널은 op-code(프로그램)이 위치할 memory 주소를 결정하고, 만약 프로그램이 시작된다면 그 op-code들이 CPU의..
· CS/OS
컴퓨터 발전의 초창기에 CPU는 국가적 자원이었기 때문에 processor의 사용률을 최대한 늘리는 방향으로 OS가 발전했습니다. 최초의 OS는 Monitor로, I/O 처리에 의해 발생하는 CPU의 대기시간에 CPU가 다른 프로그램을 처리할 수 있도록 프로그램들을 실시간으로 감시하여 메모리상 주소를 재배치 하는 batch System을 사용했습니다. (Maximize processor use) [batch system - https://rekodo.tistory.com/11] 하지만 하드웨어의 성능이 개선될수록 컴퓨터의 가격이 싸지고 사람의 노동 가치가 비싸지면서, CPU가 사람이 수행하는 작업들에 대해 얼마나 빠른 시간안에 응답할 수 있는지가 중요해졌습니다. (Minimize response time..
· CS/OS
OS - mediator, resource manager OS는 하드웨어와 application 사이에서 사용자 프로그램의 작업을 처리하기 위해 하드웨어에게 어떻게 명령해야 효율적인지 (cpu 명령, 메모리 주소 할당, I/O 발생 처리 등) 어떻게 컴퓨터 자원을 편리하게 사용할 수 있는지에 목적을 두고 발전해왔습니다. OS는 application을 실행할 수 있는 편리한 interface를 제공하고, 프로세스의 생성과 끝까지의 관리에 책임을 집니다. 또한 프로그래머에게 programming interface(java, python과 같은 언어)을 원활하게 이용할 수 있는 하드웨어 사이의 interface도 OS 수준에서 정의되어 있습니다. 그리고 여러가지 컴퓨터 자원과 처리 중인 데이터가 어디로 이동할..
· CS/OS
CPU는 i/o device와 다음과 같은 방식으로 데이터를 주고받습니다. CPU와 device가 직접 데이터를 주고받는 것이 아니라 system bus라는 데이터 전송 라인과 I/O controller라는 하드웨어를 통해 데이터를 전달하게 됩니다. System bus - Address bus : 데이터의 출발 주소와 도착 주소를 전송합니다. - Data bus : 실제 데이터 정보를 전송합니다. - Control bus : read/write와 같은 각 위치에서의 데이터 처리에 필요한 명령을 전송합니다. I/O Controller CPU가 다양한 input처리 때문에 낭비되는 시간을 줄이기 위해서 CPU 대신 I/O device에 대한 처리를 하는 하드웨어입니다. i/o controller도 데이터, ..
· CS/OS
메모리 구조 메모리 구조란 메모리를 필요에 따라 여러 가지 단계로 나누어 둔 구조를 의미합니다. 이 구조는 CPU가 메모리에 더 빨리 접근하기 위해서 만들어졌습니다. 더 상세한 목적은 'virtual memory'를 제공하기 위함인데 virtual memory란 사용자가 메모리 계층 구조로 인해 high level 메모리의 속도 + low level에서 메모리의 사이즈와 같이 각 계층의 이점만을 사용하는 것처럼 느끼게 하는 착각을 일으키는 기술입니다. 이 virtual memory의 가장 대표적인 예가 바로 CPU안에 존재하는 Cache입니다. Cache 캐시는 Sram의 빠른 속도와 Dram의 크고 싸다는 장점만을 사용자에게 제공하는 착각을 주는 virtual memory입니다. 이는 실제로 CPU와 ..
· CS/OS
Interrupt란 컴퓨터 프로그램 외에 다른 디바이스의 요청을 말합니다. 대표적으로 마우스, 키보드의 입력을 예로 들 수 있습니다. 이 뿐만 아니라 disk, memory 같은 하드웨어에서 CPU에 데이터를 보내는 것도 interrupt라고 할 수 있습니다. 하드웨어에서의 Interrupt 처리 이 Interrupt가 발생했을 때 다른 디바이스보다 훨씬 처리속도가 빠른 CPU는 Interrupt가 CPU에서 처리할 수 있는 형태로 바뀔 때까지 시간을 기다리게 되고, 비효율이 발생합니다. (I/O 처리기의 계산 속도
reko_
'CS/OS' 카테고리의 글 목록 (3 Page)