1. 프로그램의 구조와 인터럽트

프로그램이 CPU에서 명령을 수행하려면, 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다.

프로그램이 메모리에 올라가 있다 -> 프로그램이 실행 중 이다.  ▶▶ 이를 프로세스라고 한다. 

 

프로그램의 주소 영역 (프로세스 주소 공간)

코드 작성한 프로그램 함수들이 CPU에서 수행이 가능하도록 기계어 명령(machine instruction) 형태로 변환되어 저장하는 곳
데이터 전역 변수 (global variable) 등 프로그램이 사용하는 데이터를 저장하는 곳
스택 호출된 함수가 실행되고 나면 돌아가야한 주소 및 데이터를 임시로 저장하는 곳

 

  • 함수1을 수행 중 함수 2 호출 ->  스택에 함수 1에서 함수 2를 호출한 지점을 저장- > 함수 2 수행 끝 -> 스택에 저장된 주소를 참고하여 함수 1로 복귀

위의 방식으로 프로그램에 있는 함수들이 순차적으로 실행된다.

 

이와 같이 인터럽트도 함수 호출과 비슷하다.

  • 프로그램 A 수행 중 인터럽트 발생 -> 프로그램 A가 현재 수행 중인 위치 저장(스택) -> 인터럽트 처리 완료 -> 프로그램 A가 중단 된부분 부터 시작

2. 컴퓨터 시스템의 작동 개요

 

CPU 는 스스로 어떤 작업을 수행해야하는 결정을 하지 못한다.

-> 프로그램 카운터(program counter: PC) 가 존재 =  CPU가 수행해야할  메모리 주소를 담고 있는 레지스터

 

CPU가 수행 하는 명령

  • 일반명령 : 모든 프로그램에서 실행가능
  • 특권명령 : 보안이 필요한 명령, 운영체제에서만 가능
    • 사용자 프로그램에서 CPU 도움이 필요한 경우 인터럽트를 사용해 서비스 요청

3. 프로그램의 실행

프로그램 실행의 의미

1)디스크에 존재하던 실행파일이 메모리에 적재되었다.

2) 프로그램이 CPU를 할당 받고  명령을 수행하고 있는 상태이다.

 

운영방식

프로그램의 주소 공간 중 당장 CPU의 수행에 필요한 부분은 메모리에 올려두고
그렇지 않은 부분은 디스크 중 메모리의 연장 곤간으로 사용되는 스왑 영역에 내려 놓는 방식

 

프로그램마다 독자적으로 존재하는 주소공간을

가상메모리(virtual memory) 혹은 논리적메모리(logical meemory)라고 한다.

 

> 운영체제도 프로그램처럼 코드, 데이터, 스택이란 주소 공간을 가진다. 즉, 운영체제도 하나의 프로그램

(운영체제의 주소 공간 구조에 대한 설명 추가 필요)

 

4. 사용자 프로그램이  사용하는 함수

 

3가지 함수

  • 사용자 정의함수 : 프로그래머 자신이 작성해 놓은 함수
  • 라이블러리 함수 :  다른 프로그래머가 작성해 놓은 함수를 호출
    • printf ()  : 하지만 함수 내에서 입출력을 담당하는 커널 함수를 호출
  • 커널 함수 : 운영체제 커널의 주소 공간에 정의 된 함수 ( 시스템 콜 함수, 인터럽트 처리 함수)
    • 시스템 콜 함수 : read(), write(),

5. 인터럽트

인터럽트는 사용자 프로그램이 CPU의 도움이 필요할 때 시스템 콜이라는 서비스를 요청해서 도움을 받는다.

 

만약 인터럽트 처리 중에 또 다른 인터럽트가 생긴다면?

  • 데이터의 일관성을 유지하기 위해서 원칙은 허용하지 않는다.
  • 하지만.  인터럽트마다 중요도가 다르므로 중요도가 더 높은 인터럽트가 발생시 예외적으로 허용

6. 시스템 콜

시스템 콜 이란

  • 자신의 주소 공간을 거르는 영역에 존재하는 함수를 호출하는 것을 말함
  • 자신의 프로그램에 있는 함수가 아닌, 커널에 있는 함수를 호출하는 것을 말함

특징? 특이사항?

  • 자신의 공간에서 함수를 호출 못한다.
  • 주소공간 자체가 다른 곳으로 이동한다.
  • 자신이 인터럽트 라인을 세팅한다.

디스크의 파일 입출력이 이루어지는 과정 (page 108~110)

(복잡.... 다시 읽고 정리필요)

CPU 제어권

인터럽트

인터럽트 라인

하드웨어 인터럽트

로컬버퍼

 

7. 프로세스의 두 가지 실행 상태

프로세스는 자신의 주소 공간에 있는 코드만 실행하지 않고 커널의 주소 공간에 있는 코드도 실행한다.

 

프로그램 A 가 메모리에 얹어 지고 프로세스 A가 실행되었을때

  • 자신의 주소 공간에 정의된 코드를 실행하면 : 사용자 모드에서의 실행 상태 ( user mode running)
  • 커널의 주소 공간에 정의되 코드를 실행하면 : 커널 모드에서의 실행 상태 (kernel mode running)
    • 프로세스 A가 커널모드에서 실행 중

즉, 커널의 코드를 실행 하여도 프로세스 A가 실행 중인 것으로 간주.

이 프로세스가 끝 날때는  커널 모드에 진입하여 종료 

 

 

 

 

 

 

API 문서는 무엇인가?

  • 백엔드 개발자가 API를 설계한 방식을 적어두어 어떻게 사용하면 되는지 적어둔 문서
  • API 설명서

API 문서는 왜 필요한가?

1. 일관성

2. 협업과 유지 보수

3. API 사용도 중 일어난 문제해결 및 디버깅

 

API에 필히 포함되어야 하는 정보

  • URL 주소 / HTTP 메서드
  • API 설명
  • 요청 형태
    • Path Parmas
    • Query Params
    • Body Params
    • 필수 여부
    • 데이터 타입
  • 응답 형태
    • 응답 코드(status code)
    • 각 응답 코드별 설명
    • 응답 형태 (response value)
    • 응답 값에서 각 파라미터의 의미
    • 응답 값에서 각 파라미터의 필수 여부
    • 응답 값에서 각 파라미터의 데이터 타입

데이터 직군 구별

굳이 나누자면 아래 같이 겹쳐져 있는 느낌이다.

데이터 엔지니어  
  데이터분석가
                                        데이터 과학자
  인공지능 전문가
  • 데이터 엔지니어 : 데이터 수집, 저장, 유지, 보수
  • 데이터 분석가 : 엔지니어가 수집한 데이터를 이용하여 잠재적인 가치를 발굴,  회사분야에 대한 배경지식을 바탕으로 패턴 및 가설을 세우며 이야기를 만들어서 가치도 발굴
  • 데이터 과학자 : ML / DL 엔지니어, 분석가가 분석한 패턴을 통해서 미래를 예측
  • 인공지능 전문가 : 기존의 지식과 최신 기술을 활용하여 AI 알고리즘을 개발하고 문제 해결을 위한 솔루션을 제공하는 역할

여기서 개인적으로 경계가 모호다고 여겨지는 직군이 있다.

"데이터 분석가" 와 "데이터 과학자"  그리고 "데이터 과학자" 와 "인공지능 전문가" 

 

데이터 분석 및 가치를 이끌어 내는 과정

과정 참여하는 직군
1. 데이터 분석 기획 4 직군 모두 참여
2. 데이터 수집 데이터 엔지니어
3. 데이터 분석 데이터 과학자, 인공지능 전문가
4. 시각화 및 보고서 작성 데이터분석가, 데이터 과학자

 

자주 사용하는 툴의 자격증 종류

AWS : https://aws.amazon.com/ko/certification/exams 

Tableau : https://www.tableau.com/ko-kr/learn/certification 

Google : https://analytics.google.com/analytics/academy/ 

MySQL: https://www.mysql.com/certification/

 

참고하면 좋은 사이트

한국데이터산업진흥원: https://www.kdata.or.kr/kr/board/info_01/boardList.do

 

 

백엔드 프론트엔드 개발자와  데이터 직군의 접점은 없는 걸까....

'잡다 > 유용한정보' 카테고리의 다른 글

구글 검색방법  (0) 2023.11.14

2. 컴퓨터 시스템의 구조

운영체제에서 프로그램이 수행되려면 그 프로그램이 메모리에 올라가 있어야 한다.

  • 프로그램은 실행될 때 특정 작업을 수행하는 명령어들의 모음
  • 프로세스 : 메모리에 올라가있는 프로그램, 실행 중인 프로그램

3. CPU 연산과 I/O 연산

  • I / O = input / output
  • 로컬 버퍼(local buffer) : 데이터를 임시로 저장하기 위한 작은 메모리
  • 인터럽트(interrupt) : 컨트롤러들(마우스, 키보드, 디스크 등)이 CPU의 서비스가 필요할 때 이를 통보하는 방법
    • 하드웨어 인터럽트 : 컨트롤러가 인터럽트 라인 세틍
    • 소프트웨어 인터럽트 (트랩:trap) : 소프트웨어가 그 일을 수행
      • 예) 예외상황(exception)과 시스템 콜(system call)

4. 인터럽트 핸들링

인터럽트 핸들링 : 인터럽트가 발생한 경우에 처리해야 할 일의 절차를 의미

절차 예시

 (1) 한 프로그램이 실행되던 중 인터럽트 발생

 (2) 현재 실행상태(메모리 주소, 레지스터값, 하드웨어 상태 등)를 프로세스 제어블록(process control block, PCB)에 저장

 (3) CPU의 제어권이 인터럽트 처리 루틴으로 이동

 (4) 인터럽트 처리 완료

 (5) PCB에 저장된 실행상태를 CPU상에 복원

 (6) 인터럽트 발생직전 부터 프로그램 실행

 

5. 입출력 구조

큐(queue) : 입출력 요청의 동기화를 위해 장치 별로 두어 요청한 수서대로 처리 할 수 있도록 하는 것

- 다수의 프로그램이 동시에 입출력 연산을 요청 -> 동기성(synchronization)을 보장하기 위해 사용

 

6.DMA ( Direct Memory Access)

메모리 접근 연산이 CPU에 의해서만 이루어질 경우 입출력 장치가 메모리 접근을 원할 때  마다 인터럽트에 의해 CPU 업무가 방해를 받게 되어 CPU 사용의 효율성이 떨어지는 문제점 발생 

이를 해결하기 위해 메모리 접근이 가능한 장치 DMA 를 두어서 CPU에 발생하는 인터럽트 빈도를 줄여 CPU를 좀 더 효율적으로 관리

( 정리 필요)

 

7. 저장장치의 구조

주기억장치 보조기억장치
휘발성(volatile, 전원이 꺼지면 사라진다.) 비휘발성(nonvolatile, 전원이 꺼져도 보존된다.)
RAM 마그네틱 디스크(CD, 플래시 메모리 등)

 

보조기억장치 용도

(1) 파일 시스템 : 전원이 나가도 저장해야할 정보를 저장

(2) 스왑 영역(swap area) : 메모리의 연장 공간, 하드디스크가 

  • 하드디스크가 가장 널리 사용
  • 프로그램 수행에 당장 필요한 부분만 메모리에 오려두고 나머지 부분은 디스크의 스왑영역에 내려놓는다.
  • 프로그램이 실행될 때 내용을 저장했다가 프로그램이 종료될 때 저장된 내용을 삭제

8. 저장장치의 계층 구조

 

휘발성 최상위 레지스터
  캐시 메모리
  메인 메모리
비휘발성   마그네틱 디스크
  광디스크
최하위 마그네틱 테이프

 

상위 계층 일수록 접근 속도가 빠르지만 용량은 적다.

  • 캐싱 기법
    • 상대적으로 느린 저장 장치에 있는 내용중 당장 사용되거나 빈번히 사용될 정보를 빠른 저장장치에 선별적으로 저장하여 두 장치 상이의 속도를 완충
      • 캐시 메모리를 메인메모리와 같이 큰 용량을 가진것 처럼 효율적으로 이용 가능

9. 하드웨어의 보안

운영체계는 여러 프로그램이 동시에 실행될 수 있는 다중 프로그래밍 환경에서 동작 -> 충돌을 막기위해 보안 기법 필요

 

사용자모드(user mode)

- 일반적인 연산만 수행하는 모드

- 일반 사용자 프로그램 실행

 

커널모드(kernel mode, system mode) 

- 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 실행하는 모드 

- 중요한 정보에 접근해 위험한 상황을 초래할 수 있는 연산을 실행하는 모드

- 모드 종류의 명령을 다 실행 가능

 

모드비트(mode bit)

  하지만..사용자 프로그램이 시스템에 중요한 영향을 미치는 연산을 하게 될 수도 있다.

그래서 컴퓨터 시스템은 CPU 내부에 모드비트 (mode bit)를 두어 사용자 프로그램을 감시

- 사용자 프로그램이 수행중 하드웨어 접근등의 보안이 필요할때 는 운영체제가 대신 해줄 것을 요청

 

하드웨어 장치에서 보안이 유지되는 방식

- 모든 입출력 명령은 특권명령(커널모드에서 운영체제에 의해서만 수행할 수 있는것)으로 규정해서 사용자 프로그램의 접근을 막는다.

 

10. 메모리 보안

필요성

여러 프로그램이 메모리에 동시에 올라가서 실행 -> 하나의 사용자 프로그램이 다른 사용자 프로그램이나 운영체제가 위치한 메모리 영역을 침범할 수 있기 때문에 필요

 

2개의 레지스터를 이용하여 프로그램이 접근하려는 메모리부분이 합법적인지 확인

- 기준 레지스터 : 합법적으로 접근할 수 있는 메모리강의 가장 작은 주소를 보관

- 한계 레지스터 : 기준 레지스터값부터 접근할 수 있는 메모리의 범위 보관

 

11. CPU 보호

하나의 프로그램이 CPU를 독점하는 것을 막는 것

운영체제는 타이머라는 하드웨어를 이용 -> 일정시간이 지나면 운영체제가 CPU 제어권을 획득

 

12. 시스템 콜을 이용한 입출력 수행

사용자 프로그램이 입출력 을 직접 수행이 불가 -> 운영체제에게 시스템 콜이라는 서비스 대항 요청을 하는 것

' > 운영체제와 정보기술의 원리' 카테고리의 다른 글

6 장 CPU 스케줄링  (0) 2023.12.18
5 장 프로세스 관리  (0) 2023.12.13
4장 프로그램의 구조와 실행  (0) 2023.11.29
2장 운영체제 개요  (1) 2023.11.25
1장 컴퓨터 및 정보기술의 역사  (0) 2023.11.23

 

1.  운영체제의 정의

  • 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어

2.  운영체제의 기능

  • 컴퓨터 시스템내의 자원(CPU, 메모리, 하드디스크 등) 을 효율적으로 관리 -> 자원관리자(resource manger)
  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 
  • 사용자와 운영체제 자싱을 보호 ( 보안 및 보호)

3.  운영체제의 분류

  • 다중 사용자에 대한 동시지원 여부
  • 작업을 처리하는 방식 기준
    • 시분할 시스템 (time sharing system)
    • 다중 프로그래밍 시스템 (multi-programming system)
    • 대화형 시스템 (interactive system)
    • 경성 실시간 시스템 (hard realtime system)
    • 연성 실시간 시스템 (soft realtime system)

4.  운영체제의 예

  • MS 윈도우 : 개인용 컴퓨터를 위한 운영체제, 편리한 인터페이스와 각종 기능들이 특징
  • 유닉스 : 대형 컴퓨터 및 전문적인 목적의 컴퓨터에 적합, (리눅스)

5.  운영체제의 자원관리 기능

  • 물리적 메모리 관리 방식
    • 고정분할(fixed partition) : N개의 분할로 미리 나누어서 관리 -> 분할 크기도다 큰 프로그램이 적재 불가능
    • 가변분할(variable partition) : 매 시점  프로그램의 크기에 맞춰서 메모리 분할
    • 가상메모리 : 설정 된 가상메모리의 크기에 의해 실행될 수 있는 프로그램이 결정된다.
      • 인터럽트 메커니즘 이용

+ Recent posts