Coder Social home page Coder Social logo

cs's Introduction

Hello World, I'm HeeJu! Background GIF by kah on Pinterest.

LinkedIn   Gmail

💡 A Quote:

A random quote

💻 My Tech Stack:

JavaScript, TypeScript, HTML, CSS, React, Svelte, Git, GitHub Figma

📖 Read My Blogs:

Blogger  

🏆 My Stats:

GitHub Stats   Most Used Languages  

cs's People

Contributors

1two13 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

cs's Issues

⭐️⭐️⭐️[CPU 성능 향상 기법] 빠른 CPU를 위한 설계 기법

클럭

  • 클럭 속도가 높은 CPU는 일반적으로 성능이 좋다. 하지만 클럭 속도만으로 CPU의 성능을 올리는 것에는 한계가 있다.(심각한 발열 문제 발생)
    • 클럭 속도: 헤르츠(Hz) 단위로 측정하고, 이는 1초에 클럭이 몇 번 반복되는지를 나타낸다.

클럭 속도는 일정하지 않다.

  • 클럭은 고성능을 요하는 순간에는 순간적으로 클럭 속도를 높이고, 그렇지 않을 때는 클럭 속도를 낮춘다.
  • 오버클럭킹 기법을 사용하기도 한다.
    • 오버클럭킹: 최대 클럭 속도를 강제로 끌어올리는 기법

[가상 메모리] 연속 메모리 할당

연속 메모리 할당

프로세스에 연속적인 메모리 공간을 할당하는 방식이다.

스와핑

  • 메모리에 적재된 프로세스들 중에는 현재 실행되지 않는 프로세스가 있을 수도 있다. 이러한 프로세스들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식이다. 즉, 스와핑은 메모리 관리 기법이다.

  • 스와핑을 이용하면 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행할 수 있다.

    • 스왑 영역: 프로세스들이 쫓겨나는 보조기억장치의 일부 영역
    • 스왑 아웃: 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것(메모리 => 스왑 영역)
    • 스왑 인: 스왑영역 => 메모리
      => 참고로, 스왑 아웃되었던 프로세스가 다시 스왑 인될 때는 스왑 아웃되기 전의 물리 주소와는 다른 주소에 적재될 수 있다.

스왑 영역 확인하는 방법

  • 유닉스, 리눅스, macOs에서는 free, top 명령어로 스왑 영역의 크기를 확인할 수 있다. 스왑 영역의 크기와 사용 여부는 사용자가 임의로 설정할 수 있다.

⭐️⭐️⭐️[CPU의 작동 원리] ALU와 제어장치

ALU(계산기)

ALU가 받아들이는 정보 2️⃣

  1. 레지스터를 통해 받아들이는 피연산자(값)
  2. 제어장치로부터 받아들이는 제어 신호(연산자 ex.+)

ALU가 내보내는 정보 2️⃣

  1. 연산한 결괏값
  2. 플래그: 연산 결과에 대한 추가적인 상태 정보
    • 플래그 레지스터라는 레지스터에 저장된다.

⭐️⭐️⭐️[가상 메모리] 페이징을 통한 가상 메모리 관리

프로세스를 메모리에 연속적으로 할당하는 방식의 문제점 2️⃣

  1. 외부 단편화
  2. 물리 메모리보다 큰 프로세스는 실행할 수 없다.

가상 메모리

  • 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술이다.
  • 이를 가능하게 하는 가상 메모리 관리 기법에는 페이징세그멘테이션이 있다. 현대 대부분의 운영체제가 사용하는 기법은 페이징 기법이다.
  • 페이징 기법을 이용하면 외부 단편화 문제를 해결할 수도 있고, 물리 메모리보다 큰 프로세스를 실행할 수도 있다.

⭐️⭐️⭐️[프로세스와 스레드] 프로세스 개요

프로세스

  • 실행 중인 프로그램을 말한다. 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 그 프로그램은 프로세스가 된다.

포그라운드 프로세스

  • 사용자가 보는 앞에서 실행되는 프로세스

백그라운드 프로세스

  • 사용자가 보지 못하는 뒤에서 실행되는 프로세스
  • 사용자와 직접 상호작용할 수 있는 프로세스도 있고, 사용자와 상호작용하지 않고 묵묵히 정해진 일만 수행하는 프로세스도 있다.
    • 후자의 프로세스를 유닉스 운영체제에서는 데몬, 윈도우 운영체제에서는 서비스라고 부른다.

[메모리와 캐시 메모리] 메모리의 주소 공간

CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 전부 알지 못한다. 메모리에 저장된 정보는 시시각각 변하기 때문이다. 심지어 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라질 수 있다.

메모리의 주소 공간 2️⃣

1. 논리 주소

  • CPU, 실행 중인 프로그램이 사용하는 주소
  • 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소이다. 즉 프로그램마다 같은 논리 주소가 존재할 수 있다.

2. 물리 주소

  • 메모리가 사용하는 주소
  • 정보가 실제로 저장된 메모리 하드웨어상의 주소

[CPU 스케줄링] CPU 스케줄링 개요

CPU 스케줄링

운영체제프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것이다. 이는 컴퓨터 성능과도 직결되는 문제이다. 프로세스들에게 현명하게 CPU를 배분하지 못하면 무질서한 상태가 발생할 수 있기 때문이다.

[운영체제 시작하기] 운영체제의 큰 그림

커널

  • 운영체제의 핵심 서비스를 담당하는 부분이다.
    • 핵심 서비스: 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능

운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스

  • 사용자 인터페이스(UI): 윈도우 바탕화면과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로
    • 그래픽 유저 인터페이스(GUI): 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스
    • 커맨드 라인 인터페이스(CLI): 명령어를 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스

[보조기억장치] 다양한 보조기억장치

1️⃣ 하드 디스크(= 자기 디스크)

  • 자기적인 방식으로 데이터를 저장한다.

플래터(platter)

  • 실질적으로 데이터가 저장되는 곳
  • 동그란 원판 모양
  • 많은 양의 데이터를 저장해야 하기 때문에 여러 겹의 플래터로 이루어져 있고, 플래터 양면 모두 사용할 수 있다.
  • 자기 물질로 덮여 있어 수많은 N극(0)과 S극(1)을 저장한다.

스핀들(spindle)

  • 플래터를 회전시키는 구성 요소
  • 작은 원판 모양
  • RPM(Revolution Per Minute): 스핀들이 플래터를 돌리는 속도를 표현하는 단위, 분당 회전수

헤드(head)

  • 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소
  • 플래터 위에서 미세하게 떠 있는 마치 바늘같이 생긴 부품
  • 양면 플래터를 사용하는 경우 위 아래로 플래터당 두 개의 헤드가 사용된다.
  • 단일 헤드 디스크(= 이동 헤드 디스크): 플래터의 한 면당 헤드가 하나씩 달려 있는 하드 디스크
  • 다중 헤드 디스크(= 고정 헤드 디스크): 헤드가 트랙별로 여러 개 달려 있는 하드 디스크, 탐색 시간이 들지 않는다.(0)

디스트 암(disk arm)

  • 원하는 위치로 헤드를 이동시킬 수 있다.
  • 디스크 암은 헤드에 부착되어 있다.

[교착 상태] 교착 상태 해결 방법

교착 상태 해결 방법 3️⃣

1. 교착 상태 예방

  • 프로세스들에 자원을 할당할 때 상호 배제, 점유와 대기, 비선점, 원형 대기 중 하나의 조건이라도 만족시키지 않게 할당하면 된다.

상호 배제를 없애는 방법

  • 모든 자원을 공유 가능하게 만든다.
  • 하지만 현실적으로 모든 자원의 상호 배제를 없애기는 어렵기에 현실에서 사용하기에는 무리가 있다.

점유와 대기 없애는 방법

  • 운영체제는 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분하게 된다.
  • 단점
    • 자원의 활용률이 낮아진다. 당장 자원이 필요해도 기다릴 수 밖에 없는 프로세스와 사용되지 않으면서 오랫동안 할당되는 자원을 다수 양산하기 때문이다.
    • 많은 자원을 사용하는 프로세스가 불리해진다. 자원을 사용할 타이밍을 확보하기 어렵기 때문에 무한정 기다리게 되는 기아 현상이 발생할 수 있기 때문이다.

비선점 없애는 방법

  • 선점하여 사용할 수 있는 일부 자원에 대해서는 효과적이다. 예를 들어 CPU는 프로세스들이 선점할 수 있는 대표적인 자원이다.
  • 하지만 한 프로세스의 작업이 끝날 때까지 다른 프로세스가 기다려야 하는 자원도 있기 때문에 범용성이 떨어지는 해결 방법이다.

원형 대기 없애는 방법

  • 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당하면 된다.
  • 모든 컴퓨터 시스템 내에 존재하는 수많은 자원에 번호를 붙이는 것은 매우 어렵고, 각 자원에 어떤 번호를 붙이는지에 따라 특정 자원의 활용률이 떨어질 수 있다.

[데이터] 0과 1로 숫자를 표현하는 방법

정보단위

비트(bit)

  • 0과 1을 나타내는 가장 작은 정보 단위
  • n비트는 2의 n제곱 가지의 정보를 표현할 수 있다.

워드(word)

  • CPU가 한 번에 처리할 수 있는 데이터 크기
  • ex. CPU가 한 번에 16비트를 처리할 수 있다면 1워드는 16비트다.

[메모리와 캐시 메모리] 캐시 메모리

저장 장치 계층 구조

  • CPU에 얼마나 가까운가를 기준으로 컴퓨터에서 사용하는 저장 장치들을 계층적으로 나타낼 수 있다.

1. CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.

2. 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.

[프로세스 동기화] 동기화란

프로세스 동기화 2️⃣

  • 프로세스들 사이의 수행 시기를 맞추는 것이다.

1. 실행 순서 제어를 위한 동기화

  • 동시에 실행되는 프로세스를 올바른 순서대로 실행하는 것이다.

2. 상호 배제를 위한 동기화

  • 공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘이다.
  • 생산자와 소비자의 문제 p.344 참고
  • 공유 자원과 임계 구역
    • 임계 구역: 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
  • 레이스 컨디션: 잘못된 실행으로 인해 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 발생하는 문제이다.
    • 데이터의 일관성이 깨진다.
    • 고급 언어는 실행 과정에서 저급 언어로 변환되어 실행되는데, 여러 줄의 저급 언어로 변환된 고급 언어 한 줄을 실행하는 과정에서 문맥 교환이 발생할 수 있기 때문에 발생한다.

[입출력장치] 장치 컨트롤러와 장치 드라이버

입출력장치가 CPU, 메모리보다 다루기 까다로운 이유 2️⃣

1. 입출력장치에는 종류가 너무 많기 때문이다.

  • 장치마다 속도, 데이터 전송 형식 등이 다양하기 떄문에 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기가 어렵다.

2. 일반적으로 CPU와 메모리의 데이터 전송률은 높지만, 입출력장치의 데이터 전송률은 낮기 때문이다.

  • 전송률: 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표
  • 전송률의 차이가 있기 때문에 통신이 어렵다.

[데이터] 0과 1로 문자를 표현하는 방법

문자 집합

  • 컴퓨터가 인식하고 표현할 수 있는 문자 모음

문자 인코딩

  • 문자를 0과 1로 변환하는 과정
  • 문자 코드: 인코딩 후 0과 1로 이루어진 결과값

문자 디코딩

  • 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정

⭐️⭐️⭐️[명령어] 명령어의 구조

명령어 = 연산코드 + 오퍼랜드

연산코드(= 연산자)

  • 명령어가 수행할 연산
  • ex. 더해라, 빼라, 저장해라

오퍼랜드(= 피연산자)

  • 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치

[프로세스 동기화] 동기화 기법

동기화를 위한 대표적인 도구 3️⃣

1. 뮤텍스 락

  • 자물쇠 기능을 코드로 구현한 것이다.
  • 상호배제를 위한 동기화 도구이다.
  • 전역 변수 1개와 함수 2개로 구현할 수 있다.

    1. 자물쇠 역할: 프로세스들이 공유하는 전역 변수 lock

    2. 임계 구역을 잠그는 역할: acquire 함수

    • 임계 구역에 진입하기 전에 호출하는 함수이다.
    • 바쁜 대기: 임계 구역이 잠겨있다면(lock이 true) 임계 구역이 열릴 때까지(lock이 false) 반복적으로 확인한다.
    • 임계 구역이 열려있다면 임계 구역을 잠그는 함수이다.

    3.임계 구역의 잠금을 해제하는 역할: release 함수

    • 임계 구역에서의 작업이 끝나고 호출하는 함수이다.

[가상 메모리] 페이지 교체와 프레임 할당

요구 페이징

  • 프로세스를 메모리에 적재할 때 필요한 페이지만 메모리에 적재하는 기법이다.
  1. CPU가 특정 페이지에 접근하는 명령어를 실행한다.
  2. 해당 페이지가 현재 메모리에 있을 경우(유효 비트 1) CPU는 페이지가 적재된 프레임에 접근한다.
  3. 해당 페이지가 현재 메모리에 없을 경우(유효 비트 0) 페이지 폴트가 발생한다.
  4. 페이지 폴트 처리 루틴은 해당 페이지를 메모리로 적재하고 유효 비트를 1로 설정한다.
  5. 다시 1번을 수행한다.

순수 요구 페이징 기법

  • 아무런 페이지도 메모리에 적재하지 않은 채 무작정 실행하는 것이다.
  • 실행에 필요한 페이지가 어느 정도 적재되기 전까지 페이지 폴트가 계속 발생한다.

요구 페이징 시스템이 안정적으로 작동하기 위한 방법 2️⃣

  1. 페이지 교체
  2. 프레임 할당

[파일 시스템] 파일 시스템

파티셔닝과 포매팅

  • 보조기억장치를 사용하려면 파티션을 나누는 작업과 포맷 작업을 거쳐야 한다.

파티셔닝

  • 저장 장치의 논리적인 영역을 구획하는 작업이다. 즉 칸막이로 영역을 나누는 작업을 말한다.
  • 파티션: 파티셔닝 작업을 통해 나누어진 영역 하나하나

포매팅

  • 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지 결정하고, 새로운 데이터를 쓸 준비를 하는 작업을 의미한다.
  • 즉, 어떤 종류의 파일 시스템을 사용할지는 이때 결정난다.
  • 파일 시스템에는 여러 종류가 있고, 파티션마다 다른 파일 시스템을 설정할 수도 있다.

=> 포매팅까지 완료하여 파일 시스템을 설정했다면 파일과 디렉터리를 생성할 수 있다.

[CPU 스케줄링] CPU 스케줄링 알고리즘

  • CPU 스케줄링 알고리즘은 매우 다양하고 운영체제마다 다르기 떄문에 암기하기 보다는 작동 방식과 장단점을 이해하기!

스케줄링 알고리즘 종류

1. 선입 선처리 스케줄링(FCFS 스케줄링)

  • First Come First Served Scheduling
  • 준비 큐에 삽입된 순서대로 프로세스를 처리하는 비선점형 스케줄링 방식이다.
  • 호휘 효과가 발생한다. 호위 효과는 CPU를 오래 사용하는 프로세스가 먼저 도착하면 다른 프로세스는 그 프로세스가 CPU를 사용하는 동안 무작정 기다리는 현상이다.

2. 최단 작업 우선 스케줄링(SJF 스케줄링)

  • Shortest Job First Scheduling
  • 호위 효과를 방지하기 위해 탄생한 스케줄링이다.
  • 즉, CPU 이용 시간의 길이가 가장 짧은 프로세스부터 실행하는 스케줄링 방식이다.
  • 기본적으로 비선점형 스케줄링 알고리즘으로 분류되지만, 선점형으로 구현될 수도 있다.

3. 라운드 로빈 스케줄링

  • 선입 선처리 스케줄링 + 타임 슬라이스 개념이 더해진 스케줄링 방식이다.
  • 타임 슬라이스: 각 프로세스가 CPU를 사용할 수 있는 정해진 시간
  • 즉, 정해진 타임 슬라이스만큼의 시간 동안 돌아가며 CPU를 이용하는 선점형 스케줄링이다.
  • 타임 슬라이스 크기가 매우 중요하다. 타임 슬라이스가 지나치게 크면 선입 선처리 스케줄링과 다를 바 없어 호위 효과가 생길 여지가 있고, 지나치게 작으면 문맥 교환에 발생하는 비용이 크기 때문이다.

4. 최소 잔여 시간 우선 스케줄링(SRT 스케줄링)

  • Shortest Remaining Time
  • 2번과 3번을 합친 스케줄링 방식이다. (최단 작업 우선 스케줄링 + 라운드 로빈 스케줄링)
  • 최소 잔여 시간 우선 스케줄링 하에서 프로세스들을 정해진 타임 슬라이스만큼 CPU를 사용하되, CPU를 사용할 다음 프로세스로는 남아있는 작업 시간이 가장 적은 프로세스가 선택된다.

[교착 상태] 교착 상태란

교착 상태

  • 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상이다.

교착 상태 해결 법

  1. 교착 상태가 발생했을 때의 상황을 정확히 표현해 보기
  2. 교착 상태가 일어나는 근본적인 이유에 대해 알기

[메모리와 캐시 메모리] RAM의 특징과 종류

RAM의 특징

  • 실행할 프로그램의 명령어와 데이터가 저장된다.
  • 휘발성 저장 장치이다. 전원을 끄면 RAM에 저장된 명령어와 데이터가 모두 날아가기 때문이다.

반면, 비휘발성 저장 장치는

전원이 꺼져도 저장된 내용이 유지되는 저장 장치이다.(= 보조기억장치)

  • CPU는 보조기억장치에 직접 접근하지 못한다. 그래서 일반적으로 보조기억장치에는 보관할 대상을 저장하고, RAM에는 실행할 대상을 저장한다. 만약 CPU가 실행하고 싶은 프로그램이 보조기억 장치에 있다면 이를 RAM으로 복사하여 저장한 뒤 실행한다.
  • ex. 하드 디스크, SSD, CD-ROM, USB 메모리

⭐️⭐️⭐️[프로세스와 스레드] 스레드

단일 스레드 프로세스

  • 실행 흐름 단위가 하나인 프로세스

스레드

  • 프로세스(실행되는 프로그램)를 구성하는 실행의 흐름 단위이다.
  • 하나의 프로세스는 여러 개의 스레드를 가질 수 있고, 스레드를 이용하면 하나의 프로세스에서 여러 부분을 동시에 실행할 수 있다.
  • 스레드는 프로세스 내에서 각기 다른 스레드 ID, 프로그램 카운터 값을 비롯한 레지스터 값, 스택으로 구성된다.
  • 프로세스의 스레드들은 실행에 필요한 최소한의 정보(프로그램 카운터를 포함한 레지스터, 스택)만을 유지한 채 프로세스 자원을 공유하며 실행된다.
  • 최근 많은 운영체제는 CPU에 처리할 작업을 전달할 때 프로세스가 아닌 스레드 단위로 전달한다.

[운영체제 시작하기] 운영체제를 알아야 하는 이유

운영체제

  • 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재되어, 사용자 영역에 적재된 프로그램들에 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이다.
    • 자원(= 시스템 자원): 프로그램 실행에 필요한 요소
      • ex. CPU, 메모리, 보조기억장치, 입출력장치 등 모든 컴퓨터 부품
    • 사용자 영역: 커널 영역을 제외한 사용자가 이용하는 응용 프로그램이 적재되는 영역
  • 실행할 프로그램을 메모리에 적재하고, 더 이상 실행되지 않은 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리한다.
  • 어떤 프로그램부터 CPU를 사용하고, 얼마나 오랬동안 CPU를 이용하게 할지 고려하여 CPU에 자원을 할당한다.

⭐️⭐️⭐️[프로세스와 스레드] 프로세스 상태와 계층 구조

프로세스 상태 5️⃣

컴퓨터를 사용할 때 여러 프로세스들이 빠르게 번갈아 가면서 실행되고, 그 과정에서 하나의 프로세스는 여러 상태를 거치며 실행된다. 그리고 운영체제는 프로세스 상태를 PCB를 통해 인식하고 관리한다.

1. 생성 상태(new)

  • 프로세스를 생성 중인 상태이다. 즉 메모리에 적재되어 PCB를 할당받은 상태이다.

2. 준비 상태(ready)

  • 차례를 기다리고 있는 상태이다.
  • 디스패치: 준비 상태인 프로세스가 실행 상태로 전환되는 것

3. 실행 상태(running)

  • CPU를 할당받아 실행 중인 상태이다. 할당된 일정 시간 동안만 CPU를 사용할 수 있다.
  • 프로세스가 할당된 시간을 모두 사용하면(타이머 인터럽트가 발생하면) 다시 준비 상태가 되고, 실행 도중 입출력장치를 사용해 작업이 끝날 때까지 기다려야 한다면 대기 상태가 된다.

4. 대기 상태(blocked)

  • 입출력 작업이 끝날 때까지(입출력 완료 인터럽트를 받을 때까지) 기다리는 상태이다.
  • 입출력 작업이 완료되면 다시 준비 상태로 CPU 할당을 기다린다.

5. 종료 상태(terminated)

  • 프로세스가 종료된 상태이다.
  • 프로세스가 종료되면 운영체제는 PCB와 프로세스가 사용한 메모리를 정리한다.

p.298 그림 참고

⭐️⭐️⭐️[CPU 성능 향상 기법] CISC와 RISC

명령어 집합(= 명령어 집합 구조(ISA))

  • CPU가 이해할 수 있는 명령어들의 모음
  • CPU마다 ISA가 다를 수 있다. 즉, CPU가 이해할 수 있는 명령어, 어셈블리어가 달라질 수 있다.
  • ISA(Instruction Set Architecture)는 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속이다.

ISA를 기반으로 만들어진 CPU 설계 방식에는 2가지가 있다.

  1. CISC
  2. RISC

[컴퓨터 구조 시작하기] 컴퓨터 구조의 큰 그림

컴퓨터 구조 2️⃣

1. 컴퓨터가 이해하는 정보 2️⃣

  • 0과 1로 표현된 정보만 이해한다.
  1. 데이터(정적인 정보)
    • 명령어를 위해 존재하는 일종의 재료
  2. 명령어
    • 데이터를 움직이고 컴퓨터를 작동시키는 정보

2. 컴퓨터의 4가지 핵심 부품 4️⃣

  1. 중앙처리장치(CPU)
  2. 주기억장치(메모리) - 보통 RAM을 지칭한다.
    1. RAM(Random Access Memory)
    2. ROM(Read Only Memory)
  3. 보조기억장치
  4. 입출력장치

⭐️⭐️⭐️[CPU의 작동 원리] 명령어 사이클과 인터럽트

명령어 사이클(주기) 4️⃣

  • CPU가 하나의 명령어를 처리하는 정형화된 흐름
  1. 인출 사이클: 메모리에 있는 명령어를 CPU로 가지고 오는 단계
  2. 실행 사이클: CPU로 가져온 명령어를 실행하는 단계
    • 제어장치가 명령어 레지스터에 담긴 값을 해석하고, 제어 신호를 발생시키는 단계
  3. 간접 사이클
    • 명령어를 인출하여 CPU에 가져왔더라도 실행 사이클을 실행할 수 없는 경우에 간접 사이클을 거친 후 실행 사이클 단계로 이동한다.
      • 실행 사이클을 실행할 수 없는 경우: 인출 사이클이 일어난 후 메모리 접근이 더 필요한 경우(인출 사이클 => 간접 사이클 => 실행 사이클 => 인출 사이클 => ...)
    • 오퍼랜드 필드에 유효 주소의 주소를 명시하는 간접 주소 지정 방식은 명령어를 인출하여 CPU로 가져왔다 하더라도 바로 실행 사이클에 돌입할 수 없다. 두 번의 메모리 접근이 필요하기 때문이다.(유효 주소의 주소 => 메모리 안에 있는 유효 주소 => 연산에 사용할 데이터)
  4. 인터럽트 사이클
    • 인출 사이클 => 실행 사이클 => 인터럽트 사이클 => 인출 사이클 => ...

p.137 그림 참고

[보조기억장치] RAID의 정의와 종류

RAID(Redundant Array of Independent Disks)

  • 하드디스크와 SSD를 사용하는 기술
  • 데이터의 안전성, 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술이다.

[파일 시스템] 파일과 디렉터리

파일

  • 하드디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합이다.
  • 이름, 파일 위치, 부가 정보(=속성 =메타데이터)가 들어있다.
  • 파일을 다루는 모든 작업은 운영체제에 의해 이루어지기 때문에 운영체제는 파일 연산을 위한 시스템 호출을 제공한다.
    • 파일 생성, 삭제, 열기, 닫기, 읽기, 쓰기

⭐️⭐️⭐️[CPU의 작동 원리] 레지스터

반드시 알아야 하는 레지스터 8️⃣

  1. 프로그램 카운터(=명령어 포인터)
    • 메모리에서 읽어 들일 명령어의 주소를 저장한다.
    • 지속적으로 증가하며 계속해서 다음 명령어를 읽어 들을 준비를 한다.
  2. 메모리 주소 레지스터
    • 메모리의 주소를 저장하는 레지스터
    • CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 거치게 된다.
  3. 메모리 버퍼 레지스터(=메모리 데이터 레지스터)
    • 메모리와 주고받을 값(데이터, 명령어)을 저장하는 레지스터
    • CPU가 데이터 버스로 값을 주고 받을 때 거치게 된다.
  4. 명령어 레지스터
    • 메모리에서 읽어 들인 명령어(해석할 명령어)를 저장하는 레지스터
    • 제어장치는 명령어 레지스터 속 명령어를 받아들이고, 해석한 뒤 제어신호를 내보낸다.
  5. 범용 레지스터
    • 데이터와 주소를 모두 저장할 수 있다.
    • 일반적으로 CPU 안에는 여러 개의 범용 레지스터들이 있다.
  6. 플래그 레지스터
    • ALU 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장하는 레지스터
  7. 베이스 레지스터
  8. 스택 포인터

p. 114 ~ 117 참고하여 흐름 그림으로 보기

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.