전체 글 199

System Structure: 컴퓨터 시스템의 동작 원리 (3/3)

컴퓨터 시스템의 동작 원리 (2/3) 에서 이어지는 포스트이다. 9. 하드웨어 보안 우리에게 대중적은 운영체제는 다중프로그래밍(multi-programming) 환경에서 동작한다. 그러므로 각 프로그램이 다른 프로그램의 실행을 방해하거나 프로그램 간에 충돌을 일으키는 문제를 막기 위해서 하드웨어에 대한 각종 보안 기법이 필요하다. 하드웨어적 보안을 유지하기 위해 운영체제는 기본적으로 커널모드와 사용자모드 두 가지 모드를 지원한다. 커널 모드(모니터 모드, 시스템 모드)는 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 수행하는 모드로써 이 모드에서는 모든 종류의 명령을 전부 실행할 수 있다. 반면 사용자모드에서는 사용자 프로그램을 수행하며 결국 한정된 instruction만 수행이 가능하다. 시스템에..

CS/operating system 2021.02.03

System Structure: 컴퓨터 시스템의 동작 원리 (2/3)

컴퓨터 시스템의 동작 원리 (1/3)에서 이어진다. 5. 입출력 구조 입출력(I/O)란 컴퓨터 시스템이 컴퓨터 외부의 입출력 장치들과 데이터를 주고받는 것을 말한다. - 동기식 입출력(Synchronous I/O) 어떤 프로그램이 입출력 요청을 했을 때 입출력 작업이 완료된 후에야 그 프로그램이 후속 작업을 수행할 수 있는 것을 말한다. 예를 들어 디스크에서 어떤 것을 읽어오라는 요청을 받으면 그 디스크 입출력이 완료될 때까지 그 프로그램의 다음 명령을 수행하지 않고 기다린다. 그러다가 입출력이 완료되어 인터럽트가 발생되면 그제서야 cpu 제어권이 그 프로그램에게 넘어가서 다음 명령을 수행할 수 있게 된다. 따라서 I/O가 끝날 때까지 CPU를 낭비시키며 매 시점 하나의 I/O만 일어날 수 있게 된다. ..

CS/operating system 2021.02.02

System Structure: 컴퓨터 시스템의 동작 원리(1/3)

컴퓨터 시스템의 동작 원리에 대해서 3번의 포스트에 나누어 다루도록 하겠다. 이번 포스트에서는 1. 컴퓨터 시스템의 구조 컴퓨터 시스템의 구조는 컴퓨터 내부 장치인 cpu, 메모리와 외부 장치(I/O device)인 디스크, 키보드, 마우스, 모니터, 네트워크 장치 등으로 구성된다. 메모리 및 입출력장치 등의 각 하드웨어 장치에는 컨트롤러라는 것이 붙어있다. 그 디바이스를 전담하는 작은 cpu라고 생각하면 된다. 프로그램이 수행되려면 그 프로그램이 메모리에 올라가 있어야 한다. 운영체제는 컴퓨터가 부팅되었을 때부터 항상 수행되면서 각종 자원을 관리해야 하므로 항상 메모리에 올라가 있다. 하지만 항상 운영체제의 모든 부분이 메모리에 올라가있다면 쓰지 않는 부분도 많으므로 메모리의 낭비가 심하다. 따라서 항..

CS/operating system 2021.02.02

운영체제 개요

-운영체제란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어를 연결하는 소프트웨어 계층이다. 운영체제의 목표는 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하는 것(동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공)이며, 하며, 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행해준다. 목표를 1. 각종 소프트웨와의 interaction, 2. 컴퓨터 하드웨어와의 interaction(컴퓨터 시스템의 자원을 효율적으로 관리 - 소프트웨어 자원까치 통칭(프로세서: CPU, 기억장치: memory, 입출력장치: hard disk 등- 을 효율적으로 관리) 이렇게 두 가지로 나눌 수도 있다. 즉, OS의 목표를 정리하자면 1. 각종 소프트웨어와의 inter..

CS/operating system 2021.02.01

상속(Inheritance)

상속이란 부모 클래스(또는 상위 클래스) 가 자식 클래스(또는 하위 클래스 / 파생 클래스) 에게 자신의 필드와 메소드를 사용할 수 있게끔 물려주는 것이다. 예를 들어 int age라는 필드와 eat()이라는 메소드를 가진 animal 클래스를 dog 클래스가 상속 받았다면, dog 클래스에서도 age라는 필드와 eat()이라는 메소드를 사용할 수 있다. 거기에 dog클래스는 성별을 나타내는 sex 필드와, bark() 메소드 등 추가로 자기 자신만의 필드와 메소드를 가질 수 있다. 이 때 상속을 나타내려고 extends 라는 용어를 사용한다. 위의 예시대로라면 public void Dog extends Animal이 되겠다. 참고로 자바는 다중상속을 지원하지 않고 단일 상속만을 지원한다. 다중상속 =>..

JAVA 2021.01.29

1. 자바 시작하기

자바의 간단한 소개와 특징을 살펴보자. 1. 자바란? 자바는 썬마이크로시스템즈에서 발표한 프로그래밍 언어이다. 현재 (2021년 1월) 전세계에서 2번째로 많이 사용되는 언어로 굉장히 성공한 언어이다. 굉장히 성공한 언어임에는 틀림없는데 자바의 특징에는 무엇이 있을까? 1. 이식성이 높은 언어이다 (플랫폼 독립적이다) Write once, run anywhere. -JAVA- 이 말을 이해하기 위해선 프로그래밍 언어가 수행되는 과정을 알아야 한다. 우선 프로그래밍 언어는 고급 언어와 저급 언어로 구분지을 수 있다. 고급 언어는 컴퓨터와 대화할 수 있도록 사람이 만든 언어로 쉽게 이해할 수 있다. 저급 언어는 어셈블리어 같은 기계어(컴퓨터가 이해할 수 있게끔 0과 1로 이루어져 있음)에 가까운 언어이다. ..

JAVA 2021.01.29

데이터베이스 기초-1

데이터베이스는어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영 데이터의 집합이다. 1, 통합 데이터: 데이터베이스에서는 원칙적으로 똑같은 데이터가 중복 x 2. 저장 데이터: 저장되어있음 3: 운영 데이터: 어느 조직의 고유한 기능을 수행하기 위해 반드시 유지해야 할 데이터 4: 공용 데이터: 조직에 있는 여러 응용 시스템들이 공동으로 소유하고 유지하며 이용하는 데이터 데이터 베이스의 4가지 특성 1) 실시간 접근성 2) 계속적인 변화 3) 동시 공용 4) 내용에 의한 참조 데이터(data)는 현실 세계로부터 단순한 관찰이나 측정을 통해서 수집된 사실(fact)이나 값(value)을 말함 정보(information)란 어떤 상황에 대한 적절한 결정을 할 수 있게 하는 지식으로서 ..

CS/database 2020.07.23

bitset과 적용

bitset은 bool의 배열형태이다. 그러나 모든 boolean 값이 분리되어 저장되지 않고 bitset은 1 비트공간만 차지하도록 공간을 최적화 한다. 차지하는 공간: bitset(n) 연산이 빠르다!그러나 n 값을 컴파일 할 당시에 알아야 함배열 인덱싱 연산자 []의 도움으로 각 비트 셋에 개별적으로 접근 가능 bitset.count()이면 1값을 센다.0의 수를 세고 싶으면 bitset.size - bitset.count()

C++ 2020.07.22