전체 글 82

[System Software] System Software & Program Execution

고급언어, 컴파일러, 링커, 로더, 어셈블러, 라이브러리 C언어와 같은 고급 언어로 프로그램을 작성하면 컴파일러는 소스코드를 컴파일하여 이를 엉셈블리 프로그램으로 변환한다. 어셈블러는 이를 기계어 프로그램(오브젝트 파일)로 변환하고, 다른 오브젝트 파일들과 라이브러리 파일들을 링커가 합쳐서 Executable File 을 만든다. 오브젝트 파일은 불완전한 형태의 기계어 파일로, 불완전한 이유는 우리가 하나의 파일에만 코드를 작성하지 않고 다른 파일에 분리해 작성하여 생긴 파일 및 내가 작성하지 않았지만 다른 사람이 작성한 함수들을 합치지 않았기 때문이다. C언어를 예로 들면 Math 나 Print 관련 함수들을 떠올릴 수 있다. 링커는 이 파일들을 합쳐 실행가능한 파일을 생성한다. GCC같은 컴파일러 소..

Operating System 2021.02.12

[System Software] MIPS Procedure Call (Cont'd)

10강) 점프앤 링크 함수가 호출되면 호출될 함수의 주소로 점프를 한다. 함수가 리턴될 주소를 저장하는 ra 에다가 점프를 시작한 주소를 저장한다. ra 에다가 현재 프로그램 카운터 값을 저장하고, 점프한 후 다른 위치로 pc 를 바꾸는 두 연산을 합쳐둔 것이 점프앤 링크이다. 함수 호출은 결국 "리턴 어드레스 저장 - 함수의 시작 위치 점프 - 함수 실행 끝난 후 Jump Register 를 해서 호출된 지점으로 다시 돌아오는" 과정이다. 함수가 다른 함수를 호출하고, 그 함수가 다시 다른 함수를 호출하면 ra 를 덮어쓸 것이다. 함수가 한 번만 호출되면, 첫번째 그림처럼 로직이 진행되겠지만 A-B-C 함수가 연속해서 호출되면 가장 처음의 ra 값은 스택에 저장된다. 실행이 쭉 되다가 이미 ra 레지스..

Operating System 2021.02.12

[System Software] 프로그램의 메모리 주소 공간 구조

8강) - 어떤 프로그래밍 언어이든 실행할 때 보면 프로시저 구조로 되어있다. 즉 함수 구조로 되어있음. 가령 C언어의 경우 main() 함수에서 A() => B() 와 같이 함수 호출이 이어져 나간다. - 컴파일 후 실행 파일이 만들어지고, 이 프로그램을 메모리에 올리면 프로세스가 된다. 메모리 상에 주소가 매겨지게 되는데, 각 프로세스마다 (가상의) 0번지부터 시작하게 됨. 물리 주소는 ISA에 따라서 달라진다. (MIPS 의 경우 4기가 상의 어딘가에 있을 것) 메모리 레이아웃 설명 - Code : Read only 영역이다. - 전역변수와 Static 변수들은 데이터 영역에 올라간다. *주의) 함수 안에서 선언된 static 변수들 또한 데이터 영역에 올라가서 프로그램의 라이프사이클과 동일한 라이..

Operating System 2021.02.08

[System Software] C언어&어셈블리 예제

7강) MIPS Instruction Set Architecture VI - C언어와 MIPS 어셈블리언어 - 배열의 경우 시작주소를 레지스터에 저장한다. - 시작 위치로부터 얼마나 떨어져 있는지 인덱스 i 를 보고 계산한다. 정수 배열의 경우 요소 요소 마다 4byte 씩 공간을 차지하게 되므로 i 에다가 4를 곱한 주소에 배열 시작 주소를 더한 곳으로 접근한다. - 곱하기 4를 하는 과정 : 곱하기보다 더하기가 더 빠르므로 똑똑한 컴파일러는 곱하기 4를 하는 과정을 add 연산으로 대체한다. 따라서 처음에 루프가 시작되는 곳을 보면, t1 에다가 s3 를 두 번 더하고, t1 에다가 다시 t1 끼리 더한 값을 저장한다. 그리고 마지막으로 s6, 즉 배열의 시작 주소를 더해준다. - t0 라는 레지스터..

Operating System 2021.02.07

2021년 2월

스트리미라는 암호화폐 거래소 서비스를 운영하는 (GOPAX) 스타트업에 안드로이드 개발자로 취업하였다. 여러모로 뜻깊은 해가 될 듯 하다 ! 처음 안드로이드 개발을 배우기 시작했을 때 얼마 지나지 않아 "나는 이 일을 업으로 삼고싶다"라는 생각이 강하게 들었고, 그 생각을 2년 넘게 구체화 시켰다. 그리고 첫 결실이 맺어졌다. 대기업보다는 스타트업의 문화를 더 좋아하고, 그런 문화가 내 삶을 더 풍요롭게 한다고 믿기 때문에 결과에 매우 만족한다. 하지만 어디에 있던간에 대기업에서 요구하는 어떤 "실력" 이상을 갖춰 나가야 한다고 생각한다. 지금 현재로서는 대기업에 못가서 스타트업에 있는 형국이지만 10년 후에도 똑같다면 그거야말로 커리어의 실패일 것이다. 스타트업에 있지만 앞으로 끊임없이 대기업 이상의 ..

Daily Thoughts 2021.02.07

[System Software] 논리연산 & Data Transfer 연산 / Branch & Jump 연산

4강) 논리 연산 - 기계어에서의 논리연산은 숫자로 보는 관점이 아니라 비트 단위의 AND OR 를 나타낸다 - XOR 는 두 비트가 같으면 거짓 (0), 두 비트가 다르면 참 (1) 이 되는 연산. - and immediate : 더 큰 숫자와 작은 숫자를 연산 할 때는 작은 부분을 확장해야 한다. 확장할 때는 전부 0으로 채워준다 (일반적임). - 꼭 그렇지 않을수 도 있음. 양수만 있으면 작은 숫자에 상위 비트를 0으로 채우면 되지만, 숫자중 음수가 있다면 ? - 컴퓨터에서는 2의 보수형태를 이용해서 음수를 표현함. 1로 채우기 (?) => 연산 장치를 편리하게 구성할 수 있기 때문임. - 최상위비트를 1로 나타내기도 함 메모리에 접근하는 연산 1. LOAD 2. STORE - 로드는 메모리에서 읽..

Operating System 2021.02.07

[System Software] MIPS Operators

[3강 : MIPS Instruction Set Architecture II - 비트 포멧 및 산술연산] MIPS 에서 기계어는 다음과 같은 형식이다 연산자 + 계산결과 + Operand 1 + Operand 2 와 같은 형식으로 이루어져있다. 이 때 인풋으로 들어가고 나오는 것들을 레지스터와 메모리에서 취한다고 해서 '밉스의 메모리 레지스터 모델' 이라는 말을 사용하는 것 ... 아직 정확히 무슨 의미인지는 모르겠음. 레지스터의 값을 피연산자로 사용하는 경우 - 레지스터는 총 32개로 구분되므로 5비트 만으로도 충분히 표현 가능. 하지만, 메모리의 값을 피연산자로 하는 경우 32비트의 공간이 필요. => 밉스의 전체 기계어 인스트럭션 자체가 32비트인데, 도대체 어떻게 메모리의 위치를 표현해야 하는가?..

Operating System 2021.01.26

[System Software] ISA / MIPS

* 출처 : 이화여자대학교 반효경 교수님 강의 > 컴퓨터 구조 앞부분 내용들을 복습하기 위한 좋은 강의라고 생각되어서 수강중임. [1강 : System Software & Instruction Set Architecture] 시스템 소프트웨어란? - Machine Dependent, ISA 에 의존적인 소프트웨어 - 어플리케이션 프로그램은 기계에 독립적임. - 컴파일러, 어셈블러, 링커, 로더, 운영체제 등의 소프트웨어가 시스템 소프트웨어의 예시이다. Instruction Set Architecture - ISA CPU 는 ALU, Register, Control Unit 등을 포함하고 있고, Memory 혹은 Cache 에서 코드와 데이터를 읽어서 처리한다. 연산자, 연산 결과, 피연산자1, 피연산자2..

Operating System 2021.01.24

[관심종목] 크린앤사이언스

크린앤사이언스 (045520) 황사, 미세먼지 관련주. 코스닥 상장주. 시가총액 2020-12-31 기준 1940억 원 (평범한 편인 듯) 크린이 뭔가 했더니만 사명이 영문으로 Clean & Science 였음... 웹사이트 : www.cands.co.kr 크린 앤 사이언스 Melt Blown polypropylene(pp)과 polyethyleneterephthalate(pet)으로 구성되어 저차압, 고효율, 장수명을 가진 소재입니다. www.cands.co.kr 도메인도 센스있게 c and s 라고 ! ``` 동사는 자동차 여과지, 산업용 여과지, 공조용 여과지 제품을 생산으로 하는 사업을 하고 있음. 2009년과 2011년에 각각 미국법인과 중국법인을 설립하여 해외 시장 판로 확대 및 수출 다각화를..

Investing 2020.12.31