Hello Computer Vision

비전공생의 컴퓨터 구조 7주차 강의 기록 본문

컴퓨터구조

비전공생의 컴퓨터 구조 7주차 강의 기록

지웅쓰 2022. 11. 12. 00:10

이번주 과제랑 쪽지 시험이 많이 몰려서 스트레스 받지만 강의를 미루면

계속 한없이 미룰 거 같더라고요... 그래서 간략하게라도 필기를 해보았습니다.

 

이번 강의에서도 파일과 파일을 합쳐주는 링커의 예시에 대해서 많이 설명해주셨다.

교수님이 거의 3주간에 걸쳐 링커에 대한 강의를 하시고, 예제들을 풀어주시는 거보면은

아주 중요한 역할을 하는 거 같다. 그도 그럴 것이 우리는 항상 라이브러리들을 사용하고

프로그램을 만들 때 많은 파일들을 합치는데 이러한 역할들을 링커가 한다.

 

우리가 seperation programming 하는 이유는 2가지이다.

Modularity, Efficiency

저번 강의에서도 말씀해주셨던 부분이다. 

다른 사람의 코드를 재사용하기 쉽게, 그리고 컴파일 할 때 효율성을 증대시킬 수 있다.

 

파일은 정적인 것이지만 우리가 마우스를 이용해 클릭해서 실행시키면 독립적인 프로세스 인스터스가 실행된다. 

여기서 프로세스로 작업을 수행할 것인지, 스레드로 수행할 것인지 나뉜다고 한다.

 

라이브러리에는 2가지 종류가 있다.

static library, dynamic library

static library : 다른 사람이 컴파일 한 것을 가져오는 것이다.(너무 많이 사용)

여기 안에 들어있는 파일들은 수없이 많기 때문에 필요한 것만을 링커가 가져온다.

(사실 이 부분에서 어떻게 필요한 부분만 가져오는지는 모르겠네요.. 많이 쓰이는 거 위주로 가져오는 건가?)

 

라이브러리를 만들 때 모든 기능을 한가지 파일에 만드는 것은 비효율적이다.

이건 seperation programming을 하는 이유와도 같다.

 

라이브러리를 만들려면 object file들을 만들고 archive커맨드 써서 연결을 한다.

c standard 라이브러리에는 900개의 파일들이 있다.

 

링커를 통해 함수들을 합칠 때 앞에서부터 훑기 때문에 순서로 인해 문제가 생길 수있다.

object파일이 들어오고 아카이브 파일이 들어온다.

(이 부분은 잘 이해가 안됐지만 순서가 중요하다는 것을 핵심으로 가져가면 될 거 같습니다. 프로그래밍 할 때도 순서가 중요하듯.)

 

현재 우리가 배우고 있는 주소들은 다 virtual address이다.

PC의 DRAM이 1gb여도 가상메모리가 4gb가 된다면 이 정도의 프로그램을 실행시킬 수 있다.

 

 

오늘 강의도 간략하게 한번 필기해보았습니다.

시험기간이 되기전에 완강하면 좋을 거 같은데 한번 노력해보겠습니다.

 

해당 필기는 최린 교수님 강의를 필기한 것입니다.

https://www.youtube.com/watch?v=-98fwmQNufc