CS
[컴퓨터 구조] MIPS 아키텍쳐, 재귀함수 구현
MIPS 아키텍쳐의 어셈블리어를 사용해서 재귀함수를 구현해보겠습니다. 재귀 함수는 자기 자신을 호출하는 함수인데, 스택 메모리가 필요합니다. 스택 메모리는 함수가 호출될 때마다 연산에 필요한 매게 변수, caller의 address 등 필요한 데이터를 저장하는 임시 저장 메모리입니다. 스택 포인터를 직접 다뤄보면 재귀 함수가 실행될 때 스택 메모리가 어떻게 변하는지 이해할 수 있습니다. 예제를 살펴보기 전에, 함수를 구현하는 법과 jal instruction에 대해 먼저 알아보고 factorial 함수와 주어진 정수의 각 자리 수의 곱을 구하는 함수를 구현하겠습니다. 함수 구현과 jal instruction ... sum(a,b); ... } int sum (int x, int y) { return x ..
[OS] 인터럽트, 시스템 콜, 커널모드, 사용자모드
이전에 프로세스와 멀티쓰레딩에 관련된 게시물을 올렸는데, 인터럽트 시스템콜에 대한 정의와 동작 과정에 대한 설명 없이 컨텍스트 스위칭, 동기 비동기 IO에 대한 내용을 다루니 글이 난잡하고 가독성이 참 떨어진다는 생각을 했습니다. 프로세스, 멀티쓰레딩, 동기화문제 운영체제의 중요한 챕터를 공부하기 전에 반드시 알아야 하는 컴퓨터 시스템의 간단한 구조와 커널모드, 사용자모드, 인터럽트, 시스템 콜 등 꼭 중요한 개념을 이 포스팅에서 정리하려고 합니다. 1. 간략한 컴퓨터 시스템 인터럽트와 시스템콜에 내용을 정리하기 전에, 컴퓨터 시스템의 대략적인 구조를 살펴보도록 하겠습니다. 구성 요소를 소개하면서 그 역할에 대해 간략히 소개할 것인데, 자세한 개념은 뒤에 다시 설명할 예정입니다. CPU 구조 CPU CP..
[OS] 뮤텍스, 세마포어, 모니터
이번 포스팅에서는 뮤텍스, 세마포어, 모니터에 대해 알아보겠습니다. 뮤텍스와 세마포어를 어떻게 구현할 수 있는지, spin lock의 장단점은 무엇인지, binary 세마포어와 뮤텍스는 어떤 차이가 있는지를 이해할 수 있습니다. 그리고 모니터의 conditional variable과 entry queue를 보고 게시물에서 첨부한 모니터의 schematic view를 이해할 수 있습니다. 만약, 동기화를 해야하는 이유와 락을 걸고 해제하는 과정을 모른다면 먼저 아래 게시물을 보고 이 게시물을 읽는 것을 추천합니다. https://mini98.tistory.com/69 [OS] 동기화 문제, Peterson's solution, 하드웨어 명령어 동기화 문제를 다룹니다. 예제를 통해 어떤 경우에 동기화 문제가..
[OS] 동기화 문제, Peterson's solution, 하드웨어 명령어
동기화 문제를 다룹니다. 예제를 통해 어떤 경우에 동기화 문제가 필요한지 알아보고, race condition, critical section problem, 동기화 등 용어를 정리합니다. 그리고 동기화의 조건에 대해 알아본 뒤 Peterson's solution이 어떻게 조건을 만족하는지 살펴보겠습니다. 그리고 마지막으로 atomic한 하드웨어 명령어로 얼마나 간단하게 mutual exclusion을 만족하는지 살펴보겠습니다.목차동기화 문제, race condition, critical section problemPeterson's algorithmHardward Support for Synchronization1. 동기화 문제동기화가 무엇이고, 어떻게 동기화 문제를 해결할지 알아보기 전에 어떤 상황에..
[OS] CPU scheduling
Operating System Concepths, 10th edition을 학습하고 정리한 내용입니다. CPU scheduling 기본 개념 CPU 스케쥴링이 왜 필요한지, 구체적으로 어떤 알고리즘이 있는지 알아보겠습니다. CPU - I/O burst cycle CPU만 사용하는 일련의 단계를 CPU 버스트라 하고 I/O 작업을 실행하는 일련의 단계를 I/O 버스트라고 합니다. 프로그램은 CPU 버스트와 I/O 버스트를 번갈아가며 실행합니다. 그런데 어떤 프로그램은 사람과 인터렉션이 빈번하게 일어나서 파일을 읽고 쓰는 시간이 길어 I/O 버스트가 메인이 될수도 있고, 어떤 프로그램은 CPU만 쭉 사용해서 연산을 쉬지 않는 경우도 있습니다. 즉 프로그램은 CPU 버스트와 IO 버스트의 반복이지만 프로그램마..
[OS] Threads & Concurrency
Operating System Concepths, 10th edition을 학습하고 정리한 내용입니다. 학습 목표 쓰레드의 기본 구성 요소를 설명할 수 있고, 쓰레드와 프로세스의 차이를 설명할 수 있다. 멀티쓰레드 프로세스의 장점과 주요과제를 설명할 수 있다. Pthreads, Java 등 다양한 threading API를 사용해서 멀티쓰레드 어플리케이션을 설계할 수 있다. implicit threading의 다양한 접근법에 대해 설명할 수 있다. Windows와 Linux에서 쓰레드를 어떻게 다루는지 차이점을 설명할 수 있다. Thread 쓰레드의 구성 요소 쓰레드는 CPU utilization의 기본 단위이다. 독립적으로 thread ID와 program counter와 register set과 st..
[OS] 프로세스 : 프로세스 개념, 컨텍스트 스위칭, 생성 및 통신
프로세스의 개념과 컨텍스트 스위칭, 그리고 유닉스에서 프로세스를 생성하고 종료하는 방법에 대해 알아봅니다. 추가로 프로세스간 통신에 대해 아주 간략히 알아봅니다. 아래 포스팅을 먼저 읽고 게시물을 읽으면 좋을 것 같습니다. [OS] 인터럽트, 시스템 콜, 커널모드, 사용자모드 이전에 프로세스와 멀티쓰레딩에 관련된 게시물을 올렸는데, 인터럽트 시스템콜에 대한 정의와 동작 과정에 대한 설명 없이 컨텍스트 스위칭, 동기 비동기 IO에 대한 내용을 다루니 글이 난잡하 mini98.tistory.com 목차 프로세스 개념 프로세스와 메모리 레이아웃 프로세스 상태 PCB 프로세스 스케쥴링 스케쥴링큐 스케쥴러 컨텍스트 스위칭 Operation on process 프로세스 통신 프로세스 개념 1. 프로세스와 메모리 레..
[자료구조] 자바 트리 회전 소개 및 구현
https://www.youtube.com/playlist?list=PLpPXw4zFa0uKKhaSz87IowJnOTzh9tiBk Data Structures Rob teaches CS310, Data Structures in Java at San Diego State University. These lectures accompany that course. There are both discussions of the topics and ... www.youtube.com Rob Edwards 교수님의 CS310 Data Structures in Java를 공부하고 정리한 내용입니다. 부스트 코스 자바로 구현하고 배우는 자료구조에서도 학습할 수 있습니다. 트리의 불균형에 대해 알아보고, 회전으로 균형된 트..
[자료구조] 자바 트리 소개 및 구현
https://www.youtube.com/playlist?list=PLpPXw4zFa0uKKhaSz87IowJnOTzh9tiBk Data Structures Rob teaches CS310, Data Structures in Java at San Diego State University. These lectures accompany that course. There are both discussions of the topics and ... www.youtube.com Rob Edwards 교수님의 CS310 Data Structures in Java를 공부하고 정리한 내용입니다. 부스트 코스 자바로 구현하고 배우는 자료구조에서도 학습할 수 있습니다. 트리를 순회하는 방법을 알아보고, add, remo..
[자료구조] 자바 힙 소개 및 구현
https://www.youtube.com/playlist?list=PLpPXw4zFa0uKKhaSz87IowJnOTzh9tiBk Data Structures Rob teaches CS310, Data Structures in Java at San Diego State University. These lectures accompany that course. There are both discussions of the topics and ... www.youtube.com Rob Edwards 교수님의 CS310 Data Structures in Java를 공부하고 정리한 내용입니다. 부스트 코스 자바로 구현하고 배우는 자료구조에서도 학습할 수 있습니다. 이번 포스팅에서는 이진 트리 자료구조로 구현하는 힙..