메모리 구조 메모리 구조란 메모리를 필요에 따라 여러 가지 단계로 나누어 둔 구조를 의미합니다. 이 구조는 CPU가 메모리에 더 빨리 접근하기 위해서 만들어졌습니다. 더 상세한 목적은 'virtual memory'를 제공하기 위함인데 virtual memory란 사용자가 메모리 계층 구조로 인해 high level 메모리의 속도 + low level에서 메모리의 사이즈와 같이 각 계층의 이점만을 사용하는 것처럼 느끼게 하는 착각을 일으키는 기술입니다. 이 virtual memory의 가장 대표적인 예가 바로 CPU안에 존재하는 Cache입니다. Cache 캐시는 Sram의 빠른 속도와 Dram의 크고 싸다는 장점만을 사용자에게 제공하는 착각을 주는 virtual memory입니다. 이는 실제로 CPU와 ..
Interrupt란 컴퓨터 프로그램 외에 다른 디바이스의 요청을 말합니다. 대표적으로 마우스, 키보드의 입력을 예로 들 수 있습니다. 이 뿐만 아니라 disk, memory 같은 하드웨어에서 CPU에 데이터를 보내는 것도 interrupt라고 할 수 있습니다. 하드웨어에서의 Interrupt 처리 이 Interrupt가 발생했을 때 다른 디바이스보다 훨씬 처리속도가 빠른 CPU는 Interrupt가 CPU에서 처리할 수 있는 형태로 바뀔 때까지 시간을 기다리게 되고, 비효율이 발생합니다. (I/O 처리기의 계산 속도
Instruction이란?? 우리가 실행하는 컴퓨터 프로그램은 수많은 Instruction의 집합입니다. 개발자가 프로그래밍 언어로 작성한 코드들은 assembly어로 컴파일 되어 OS로 전달되고, OS는 전달 받은 명령을 한줄 한줄 순서대로 읽으며 그 계산을 CPU의 여러 register에게 맡깁니다. 메인 메모리에서 CPU에게 처리할 명령의 메모리상 주소를 전달하는 것을 반입이라고 합니다. Register 그 과정에서 특수한 역할을 맡는 아래의 레지스터들이 존재합니다. PC(Program Counter) - 다음에 반입할 명령어의 주소를 저장하고 있습니다. (명령어를 반입할 주소) IR(Instruction Register) - PC에 저장되어 있는 주소에 접근하여 현재 수행할 명령어를 가져와 저장합..
OS의 작업을 이해하려면 먼저 하드웨어, 소프트웨어의 동작에 대한 이해가 선행되어야 합니다. 하나의 프로그램이 실행될 때 하드웨어에서 어떤 작업이 이루어지는가 프로그램의 실행 만약 사용자가 하나의 프로그램을 실행시키면 그 프로그램에 작성되어 있는 명령과 참조하고 있는 데이터를 Main mamory인 Ram으로 불러오게 됩니다. 프로그램 코드와 데이터는 disk에 저장되어 있습니다. 예를들어, 어떤 게임을 실행시키면 하드 디스크나 SSD에 저장되어 있는 파일들을 컴퓨터 위에서 빠르게 처리할 수 있도록 Ram으로 보내줍니다. 여기서 OS가 프로그램의 실행을 지시하면 CPU의 존재하는 레지스터들이 메모리에 순서대로 존재하는 명령들을 가져와 명령을 실행하고, 그 결과를 다시 메모리로 전달하여 프로그램이 실행되는..
운영체제(Operating System)는 소프트웨어를 위한 시스템 소프트웨어입니다. 이 말은 소프트웨어의 원활한 이용을 위해 하드웨어(cpu, memory, I/O device), 소프트웨어 자원을 관리하고 프로그램을 실행시키거나 개발할 수 있는 환경을 제공합니다. window나 linux가 대표적인 OS(Operating System)입니다. 이와 같은 OS 환경 위에서 우리는 application을 실행시킬 수 있습니다. 이처럼 OS는 하드웨어와 소프트웨어의 중개자 역할을 하고 있습니다. 컴퓨터공학에서 OS는 빠질 수 없는 필수적인 요소입니다. - 시간이 지날수록 다양한 device에서 OS를 탑재합니다. 자동차와 가전제품은 물론이고, 초경량 기기에도 OS를 볼 수 있습니다. 또한 OS가 없는 Fi..
데이터베이스는 데이터를 저장하는 하나의 시스템(구조)입니다. 데이터베이스를 사용하기 이전에는 파일 시스템으로 데이터를 저장해왔습니다. 파일 시스템의 한계 Redundancy(중복성) 파일 시스템에서 특정 데이터가 한 폴더가 아니라 다른 폴더에서 참조하고, 사용하고 싶다면 한 개의 파일이 다른 폴더에서 동시에 중복으로 존재해야 합니다. 같은 데이터를 가지고 있는 폴더가 늘어나는 만큼 저장 용량의 낭비가 일어납니다. Inconsystency(불일치) 위와 같은 중복성 때문에 하나의 데이터가 여러 폴더에 동시에 존재한다면 그 데이터를 수정할 때 모든 폴더에서 똑같은 작업을 수행해야 하고, 각 데이터가 업데이트되는 정보량만큼 낭비도 늘어나게 됩니다. 그 데이터를 삭제하고 싶을 때도 마찬가지입니다. Accessi..