본문 바로가기

전체 글70

개요 세 가지 주요 개념.가상화(virtualization), 병행성(concurrency), 영속성(presistence) 프로그램은 매우 단순한 일을 한다 : 명령어르 실행한다. 프로세서는 명령어를 초당 수백만 번 (요즘은 수십억 번)반입(fetch)하고, 해석(decode)하고 (즉, 무슨 명령어인지 파악하고), 실행(execute) 한다. 시스템을 사용하기 편리하면서 정확하고 올바르게 동작시킬 책임이 있기 때문에 소프트웨어를운영체제(operating system, OS) 라고 부른다 앞서 언급한 일을 위해 가상화(virtualization)라고 불리는 기법을 사용한다.운영체제는 프로세서, 메모리, 또는 디스크와 같은 물리적인 자원을 이용하여 일반적이고, 강력하고, 사용이 편리한 가상 형태의 자원을 생성.. 2024. 9. 25.
Understanding Threads 쓰레드 생성, 쓰레드 종료, 쓰레드 간에 스위치를 하는 간단한 스케줄러, 동기화 함수가 구현 되어있음- semaphores, locks, condition variables, and optimization barriers 어떤 함수를 실행하고자 하는 경우, thread_create() 의 인자로 실행하고자 하는 함수를 넣으면 됨.미니 프로그램처럼 thread_create()하면 main()이 실행 되는 것처럼 쓰레드에 전달된 함수가 실행됨. 언제나 하나의 쓰레드만 실행되고 나머진 비활성화. 다음이 없으면 idle()로 실행. 기다려야 할 때 문맥교환 강제 진행.문맥교환 방식은 threads/thread.c 의 thread_launch() 에 정의되어 있다.이는 현재 실행중인 쓰레드의 상태를 저장하고, 스.. 2024. 9. 25.
Synchronization 스레드들 간 자원 공유하는것은 주의를 요함.pintos는 이를 위한 다양한 synchronization 함수들을 제공함 Disabling Interrupts 인터럽트 비활성화synchroniztation을 하는 가장 단순한 방법은인터럽트(CPU의 실행을 잠시 멈추고, 특정 작업을 처리한 후 실행하던 작업으로 복귀)를 불가능하게 하는 것.인터럽트가 꺼지면, 다른 스레드는 진행중인 스레드를 선점 불가.스레드 선점은(preempt)은 timer interrupt에 의해 이뤄지기 때문.  암튼, pintos는 '선점가능한(preemptible) 커널' 임.선점 가능한 커널은 더 명시적인 동기화가 필요함 인터럽트를 비활성화 시키는 주된 이유는 외부의 인터럽트 핸들러와 커널 스레드를 동기화 시키기 위해서임. 몇가지.. 2024. 9. 25.
개요 Pintos란?x86-64 아키텍쳐에서 동작하는 간단한 OS 프레임워크kernel - threadsloading and running user programsfile system위 3개를 강화할 예정 가상 메모리구현 소스트리 둘러보기threads/ : 프젝1에서 수정을 시작할 base kernel 소스 코드userprog/ : 프젝2 에서 수정을 시작할 user program loader의 소스코드vm/ : 프젝3 에서 가상 메모리 구현filesys/ : 기본적인 file system의 소스코드. 프젝2 부터 씀devices/ : (키보드, 타이머, 디스크 등) I/O 장치 interfacing을 위한 소스코드. (프젝1 에서 타이머 수정)lib/ : (라이브러리, Pintos커널과 (프젝2)user p.. 2024. 9. 25.
17 생성자 함수에 의한 객체 생성 생성자 함수(constructor)new 연산자와 함꼐 호출하여 객체(인스턴스)를 생성하는 함수 여러가지 빌트인 생성자 함수// String 생성자 함수에 의한 String 객체 생성const strObj = new String('Lee');console.log(typeof strObj); // objectconsole.log(strObj); // String {"Lee"}// Number 생성자 함수에 의한 Number 객체 생성const numObj = new Number(123);console.log(typeof numObj); // objectconsole.log(numObj); // Number {123}// Boolean 생성자 함수에 의한 Boolean 객체 생성co.. 2024. 9. 25.
Longest Substring Without Repeating Characters (Medium) 문제Given a string s, find the length of the longest substring without repeating characters. Example 1:Input: s = "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3. Example 2: Input: s = "bbbbb" Output: 1 Explanation: The answer is "b", with the length of 1. Example 3: Input: s = "pwwkew" Output: 3 Explanation: The answer is "wke", with the length of 3. Notice that the an.. 2024. 9. 23.