컴퓨터(Computer Science)/시스템 프로그래밍(System Programming)

시스템 프로그래밍을 위한 기본 OS 지식

게임이 더 좋아 2020. 12. 8. 22:12
반응형
728x170

전 글에서는 시스템 프로그래밍을 하는 이유를 배웠다.

그렇다면 이제 프로그래밍을 할 때 알아야 하는 지식에는 무엇이 있을까?

 

사실 컴퓨터 구조 + 운영체제 만 알면 된다고 감히 말할 수 있다.

**위의 두 분야에 대한 글도 써놓았다.

 

우선 오늘은 OS부터 알아보자


우선 OS란 무엇인지부터 알아보자

OS란 사용자의 편의성과 자원분배의 효율성을 위해 만들어진 소프트웨어라고 볼 수 있다.

 

자원분배의 효율성이란

하드웨어의 자원을 효율적으로 관리 + 사용자 간의 보안 유지 + 오류 관리를 말한다.

 

편의성이란

GUI같은 인터페이스 + Standard Library + 사용자가 하드웨어 자원 접근 용이를 말한다.

 

++ 다른 설명으로는 (참고)

Operating systems provide a virtual machine abstraction to handle diverse hardware 라고도 말한다.

VM을 제공한단다. 

 

VM중 System VM을 보자면

 

 

이렇단다.

 


OS는 알아봤으니 

필요한 지식에 대해서 알아보자

 

4가지 정도는 알고 있어야 한다.


•Multiprogramming -관련 글

•Process -관련 글

•Threads - 관련 글

•Address spaces

그렇다면 나는 Address spaces만 설명해주면 되겠다.

 

 

이 그림을 살짝 보고 설명을 이어가보겠다.

** 위 그림 대한 설명을 첨부한다.

 

 

?? 그림봐도 모르겠는데...? Address space가 그래서 뭐냐고??

 

우리는 프로그램을 실행할 때 직접 Physical memory에 할당하지 않는다.

논리적 주소에 의해 할당한다. 가상메모리(virtual memory)라고도 한다. 

그게 무슨말이냐??

 

만약 우리가 메모리의 물리적 주소에 데이터를 저장하고 instruction들을 저장했다면 컴퓨터가 바뀐다면 우린 바뀐 컴퓨터의 물리적 메모리에 맞게 다시 프로그램을 수정해야 한다.

근데 그게 말이되는 말인가??? ㅋㅋㅋㅋ

절대 아니다. 그래서 우리는 논리적 주소를 해석해주는 translator를 두고 다른 컴퓨터에서도 계속 프로그램이 실행가능하다. 

그 그림이 아래와 같다.

 

 

 

이 정도는 시스템프로그래밍을 하기 위한 기본 지식이다.

최소한 이정도는 알고 뛰어들자.

반응형
그리드형