운영체제 과제는 나에게 너무 어렵다.. 맨날 코드 조금만 고치면 부팅이 안 되니 원.. 어쩌라는건지.. 항상 제출이 목표..ㅎ 🥑 사용중인 리눅스 이름 확인 uname -r 🥑 리눅스 커널 컴파일 명령어 리눅스 커널 소스 수정을 한 이후에는 이를 적용하기 위해 리눅스 커널의 모든 파일을 다시 컴파일 해줘야한다. cd /usr/src/linux-4.4/ sudo make -j4 sudo make install reboot 📌 "sudo make -j4"에서 "-j4"는 컴파일을 하는 데 4개의 코어를 사용하겠다는 의미로 이를 설정해줄 경우 컴파일 시간을 단축시킬 수 있다. 첫 컴파일시에는 다음 블로그 참고 : [Ubuntu] 커널 컴파일(Kernel Compile) (tistory.com) 🥑 공유 폴더 ..
📁 탐욕법 (그리디, Greedy) ✔️ 매 순간 가장 좋아보이는 것을 선택한다.
📁 정렬 (Sorting) ✔️ 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 ✔️ 이진 탐색(Binary Search)의 전처리 과정이 되기도 한다. 📁 파이썬의 정렬 라이브러리 ✔️ 병합 정렬(merge sort)을 기반으로 만들어졌으며, 퀵 정렬보다는 느리지만 최악의 경우에도 시간 복잡도 O(NlogN)을 보장한다는 특징을 가진다. 📌 [Python] 튜플을 원소로 하는 리스트 정렬 (tistory.com) 📁 Comparisons Sorting Algorithm (비교 방식 정렬 알고리즘) 📄 버블 정렬 (Bubble Sort) ✔️ in-place sort로 인접한 두 개의 데이터를 비교해가면서 정렬을 진행한다. ✔️ 가장 큰 값을 배열의 맨 끝으로 이동시키기때문에 정렬하고자 하는 원소의 ..
오류(Error): 결함(Defect)의 원인이 되는 것으로, 일반적으로 소프트웨어 개발자, 분석가 등 사람에 의해 발생한 실수를 의미한다. 결함(Defect): 오류로 인해 소프트웨어 제품에 발생한 결함을 의미하며, 결함을 제거하지 않으면 소프트웨어 제품에 문제(Problem)가 발생할 수 있다. 이것은 장애(Failure)로 이어질 수 있다. 결점(Fault)과 버그(Bug)와 같은 의미이다. 장애(Failure): 결함(Defect)으로 인해 제품, 서비스가 기대결과값을 생성하지 못하는 상태를 의미한다. - 사용자가 예상한 결과와 실행 결과 간의 차이나 업무 내용과의 불일치 등으로 인해 변경이 필요한 부분도 모두 결함에 해당된다. 오류 → 결함 → 장애 의 매커니즘을 가지지만 모든 결함이 장애로 이..
Operand Addressing 방법 mov eax, 1// OK mov [eax], 1// OK mov eax, ebx// OK mov eax, [ebx]// OK mov [eax], [ebx]// ERROR M-to-M 타입은 없음!! operand의 형태에 따라 addressing 방법이 달라진다. 이때 M-to-M(메모리-to-메모리) 타입은 불가능하다. 메모리 접근시 시스템 버스를 타게되는데, 이 시스템 버스는 한번에 하나씩만 사용이 가능하다. 따라서 M-to-M 타입의 경우 동시에 operand 두개가 동시에 시스템 버스를 사용해야하므로 불가능하다. #include int main() { int i = 0; __asm { mov ss:[esp], 0x12345678 mov eax, [esp]..
어셈블리어 기계어의 비트 형식을 mnemonic code로 나타낸 것 Mnemonic code 기계어의 비트 형식이 나타내는 의미를 symbol로 표현한 것으로 프로그램을 이해하거나 작성하기가 쉽다. 어셈블리 프로그래밍을 하는 이유 컴퓨터 하드웨어의 구성 요소들을 직접 액세스하려고 할 때 컴파일러를 설계하거나 시스템 프로그램을 작성하려고 할 때 빠른 수행이 필요한 프로그램을 작성하려고 할 때 기억 장소를 적게 차지하거나 입출력 장치를 보다 효율적으로 사용하려 할 때 Assembler 어셈블리어를 기계어로 변환하는 프로그램 → 어셈블리어와 기계어는 1:1 mapping 관계로 disassemble이 가능하며 이를 통해 코드가 동작하는 로직을 이해할 수 있다. Assebly 데이터 타입 Byte = 1 by..
x86 or 08x06 인텔이 개발한 마이크로프로세서 계열을 부르는 말이자, 이들과 호환되는 프로세서들에서 사용한 명령어(instruction) 집합 구조들을 통칭하는 말이다. 초기의 프로세서들의 이름이 모두 80으로 시작해서 86으로 끝났기 때문에 이러한 이름으로 불린다. 마이크로프로세서(microprocessor, microprocessing unit, 초소형 연산 처리 장치) 기계어 코드를 실행하기 위해 실행과정을 단계별로 나누어 처리를 위한 마이크로 코드를 작성하고, 이 마이크로 코드에 의해 단계적으로 처리하는 논리회로를 말한다. CPU(중앙 처리 장치)가 컴퓨터 전체 시스템의 위치와 입장에서 나온 말이라면, 마이크로프로세서는 동작 방식에서 나온 말로 서로 같은 것이다. https://ko.wik..