이전 학기에 배운 시스템프로그래밍을 복습하는 시간을 가지고자 합니다.
1주차때는 주로 System Program 이 무엇인지에 대해 배우고 그 종류와 하드웨어의 구조에 대해 간략히 다루고 있습니다.
혹여 질문이 있으시거나 오류가 있으시면 댓글로 답해주시면 감사하겠습니다.
1. Computer Organziation
처음에는 컴퓨터의 구조에 대해 설명하고 있습니다. 위 그림이 잘 요약해주었지만 큰 축으로 하드웨어와 소프트웨어로 나뉘어지고 하드웨어는 CPU , 입출력장치 , Memory 로 구성되어지고 소프트웨어는 System program과 Application program(응용프로그램)으로 구성되어 있습니다.
2. Hardware components : PC
먼저 PC의 구성요소를 살펴보면
1) Input Device : Keyboard,,,
2) Main Memory : RAM ,,,
3) CPU
4) Secondary Memorage : SSD , HDD ,,,
5) Output Device : Monitor,,,
6) Communication Device : NIC , Wifi ,,,
3. Hardware components : DRAM vs DISK
DRAM과 DISK의 특징은 크게 세 가지로 나타낼 수 있습니다. 첫 번째로 Speed(속도)입니다. 보통 DRAM이 DISK보다 빠른 속도를 보입니다. 두 번째 특징은 Capacity(용량)입니다. DISK가 더 많은 용량을 가집니다. 그리고 세 번째는 Volatility(휘발성)입니다. DRAM은 휘발성으로 전원이 꺼지면 사라지지만 DISK는 비휘발성 메모리로서 전원이 꺼져도 내용이 그대로 보존됩니다. 번외로 DRAM은 바이트 단위로 구성되는 반면 DISK는 섹터 단위로 데이터를 주고 받습니다. 그래서 CPU 입장에서는 디스크의 데이터를 DRAM으로 올리는 과정이 필요한데 이를 Loading 이라 부릅니다.
4. Hardware components : Smart Phone
1) Input Device : touch screen , voice , sensor ,,,
2) Main Memory : SRAM- Static Ram(정적램)이라고 하며 DRAM과 달리 기억장치에 전원이 공급되는 한 계속 보존되는 램
LPDDR - Low Power DDR , 모바일 전용으로 만들어진 램이다 더 저전력인 것이 특징.
3) CPU : ARM을 기반으로 함.
4) Storage : NAND FLASH
5) Communication : Wifi , LTE , CDMA ,,,,
5. Hardware components : for Mobiles
이렇게 컴퓨터와 모바일 기기와의 차이점이 존재하는데요 특히 모바일 스마트폰이 보편화 된 원인 중 모바일 최적화용 하드웨어가 나왔기 때문인데요 크게 세 가지 편의성을 중시했습니다.
1) 저전력 : 컴퓨터와 달리 모바일 기기의 특성 상 Power Saving의 필요성이 컸는데요 그래서 컴퓨터의 CISC 방식과 달리 RISC 방식을 도입했습니다. 이 둘의 차이는 ISA 설명 때 적도록 하겠습니다. 또 LPDDR 의 방식을 도입하기도 했습니다.
2) 휴대성 : 들고다녀야하는 휴대성을 중요시 하는 모바일 기기 특성 상 무거운 디스크 대신 가벼운 플래시 메모리를 사용했습니다.
3) 유저에게 친숙함을 부여 : 다양한 입출력장치를 사용합니다. 보통 컴퓨터는 키보드와 마우스로 하는 반면 모바일 기기는 다양한 입출력 수단을 사용하는 것이 특징입니다.
6. System Program : 시스템 전반에 작용하는 응용프로그램이 잘 구동되게 도와주는 프로그램들이라고 할 수 있습니다.
즉 , Supporting computing environements for application programs 이라고 요약할 수 있습니다.
반면 Application Program은 무엇일까요? 이것은 우리가 눈으로 볼 수 있는 , 즉 기능을 제공하는 프로그램이라고 할 수 있습니다. 예를 들면 브라우저 , 파워포인트 같은 프로그램들이 있습니다.
7. Types of System Program
그렇다면 이러한 시스템프로그램들의 종류는 무엇이 있을까요? 우리는 세 가지로 나눠서 볼 수 있습니다.
1) Compile System
2) Operationg System
3) Runtime System
이 세 가지로 크게 나눌 수 있는데 이 부분에 대한 설명은 다음 게시글에서 하도록 하겠습니다. 감사합니다.