OS intro

불꼬ㅊ코딩·2023년 3월 7일
0

운영체제

목록 보기
1/2
post-thumbnail

국민대학교 황선태 교수님의 운영체제 수업을 듣고, 수업내용을 정리할 목적으로 작성하는 글입니다.

선행 지식

1. 폰노이만 아키텍처

  • 현대의 컴퓨터 대부분이 따르고 있는 구조이다.
  • 중앙처리장치(CPU), 주기억장치(RAM), 입출력장치(I/O Device)로 구성
  • CPU는 명령어와 데이터를 주기억장치에서 가져와서 실행하고, 결과를 다시주기억장치(메모리)에 저장한다.
  • 주기억장치는 프로그램과 데이터를 저장하는 장치이며, 입출력장치는 사용자와 컴퓨터 사이의 데이터 전송을 담당함.
  • 폰 노이만 구조는 명령어와 데이터가 같은 주기억장치에 저장되어 있으며, CPU가 이를 순차적으로 실행하는 구조를 가지고 있음.
  • 이러한 구조는 프로그래밍의 자유도를 높이고, 프로그램의 재사용성과 유지보수성을 증대시키는 장점을 가지고 있음.

2. 메모리 란?

  • 일반적으로 RAM이라고 부르며, 우리가 사용하는 프로그램과 그 프로그램에서 사용하는 데이터들(변수)이 포함된다. 우리가 사용하는 메모리는 선형적인 구조를 가지고 있으며, 주소 라는 것을 부여해서 데이터가 저장된 영역을 구분한다.
    하지만 어디까지나 임시저장소이기 때문에, 컴퓨터의 전원을 끄면 데이터가 전부 날아가는 휘발성 저장소이다.
  • 요약하자면 메모리는 프로그램과 그 프로그램에서 사용하는 데이터들이 저장되는 임시 저장공간이다.

3. Load, Store 연산

Load 연산은 말 그대로 메모리에서 CPU의 레지스터로 데이터를 가져오는 연산이다.
Store 연산은 Load연산과 반대로 CPU에서 연산을 마친 데이터를 알맞은 주소에 저장하는 과정이다.

4. 변수 배치

1. 전역변수(초기화 여부에 따라 다름)
화 되지 않은 전역변수는 bss에 의해 0으로 초기화하고, 초기화 된 전역변수는 개발자가 설정한 값으로 초기화 되어 메모리에 올라간다.

2. 지역변수
지역변수 및 매개변수 와 함수 호출에 필요한 데이터들은 스택에 저장된다.

3. 동적할당된 변수
C언어에서 malloc, java에서 new 연산자로 런타임동안 동적으로 할당되는 변수들은 모두 힙에 저장된다.

5. 프로그램 화일(실행 화일)

프로그램 화일은 프로그램이 실행되는데 필요한 여러 요소를 담고있다.

  • 소스코드를 컴파일한 기계어 코드.
  • 프로그램에서 사용하는 정적(static) 변수와 전역(global) 변수

    이 밖에도 링커정보, 운영체제 정보, 여러 리소스 등을 담고있다.
텍스트, 초기화된 자료, 초기화되지 않은 자료 힙과 스택의 크기 등이 프로그램 화일에 포함된다.

6. Loading(탑재) & ReLocation(재배치)

Location(탑재)

여기서 설명하는 Loading은 위에서 언급했던 Load연산과는 다르다. 여기서 의 Loading은 보조기억장치(hdd/ssd)에 저장된 프로그램 실행파일을 메모리에 올리는 과정으로, 메모리에 저장된 데이터를 cpu의 레지스터에 가져오는 load연산과는 차이가 있다.

ReLocation(재배치)

우리가 사용하는 컴퓨터는 수 많은 프로그램이 동시에 돌아가고 있다. 이 수 많은 프로그램들을 메모리에 올리는 과정에서 충돌이 일어날 수 있는데, 얘를들어 두개의 프로그램이 같은 200번 주소에 올라가려고 했다면 충돌이 발생 할 것이다.
이런 상황을 방지하기 위해서 상대적인 주소로 계속 재 배치하는 과정을 relocation 이라고 한다.

7. Booting

  • 부팅 과정에서 많은 일들이 일어나지만, 오늘 강의에서는 커널의 역할을 설명 하셨다.
  • 부팅과정에서 커널에 있는 i/o 기능이 메모리에 올라가게 되고, 이 과정이 가장 먼저 수행된다는 뉘앙스로 마무리하심.
profile
안녕하세용

0개의 댓글