본문 바로가기
관리자

Computer Science

(60)
[Leetcode] 9. Palindrome Number 1. 문제 Given an integer x, return true if x is a palindrome, and false otherwise. Example 1: Input: x = 121 Output: true Explanation: 121 reads as 121 from left to right and from right to left. Example 2: Input: x = -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome. Example 3: Input: x = 10 Output: false Explan..
[Leetcode] 8. String to Integer (atoi) 비추천이 너무 많아서 살펴보니 쓸데없는 복잡한 케이스를 만들어서 if문을 너무 많이 강제한다는 의견들이 많다. 테스트 자체에 대한 생각 외에 더 이상 탐색하는건 시간 낭비인 문제인 것 같다. 간단해보이는 문제라도 많은 케이스가 존재한다. 처음부터 차분히 풀어야한다. 여러 번 돌려보면서 케이스 스터디를 하는게 낫다. 문제를 푸는 입장이라면 내가 케이스들을 다 생각할 필요가 없다. 영어 해석도 일단 대충하고 실행을 여러 번하는게 낫다. ---------------------------------아래 내용은 안 봐도 됨 1. 문제 Implement the myAtoi(string s) function, which converts a string to a 32-bit signed integer (similar ..
[LeetCode] 7. Reverse Integer 1. 문제 Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0. Assume the environment does not allow you to store 64-bit integers (signed or unsigned). Example 1: Input: x = 123 Output: 321 Example 2: Input: x = -123 Output: -321 Example 3: Input: x = 120 Output: 21 Constraint..
혼자 공부하는 컴퓨터구조 + 운영체제: 6. 파일 시스템 15. 파일 시스템 파일과 디렉터리 파일 파일: 의미있고 관련 있는 정보를 모은 논리적 단위 속성(attribute) | 메타데이터(metadata): 이름, 실행하기 위한 정보 등 부가 정보 파일을 다루는 작업은 시스템 호출에 의해 이루어진다. 어떤 응용프로그램도 임의로 파일을 조작할 수 없으며 파일을 다루려면 운영체제가 직접 다루도록 되어있다. 운영체제는 파일 열기, 읽기, 쓰기 등 다양한 시스템 호출을 제공한다. 디렉터리 파일들을 관리하기 위해 묶어놓은 것이 디렉터리이다. 윈도우 운영체제에서는 폴더(folder)라고 부른다. 운영체제 입장에서는 디렉터리도 파일의 한 종류이다. 파일 이름과 파일을 유추할 수 있는 정보의 테이블로 구성된 것을 디렉터리로 인식하고, 디렉터리도 파일처럼 시스템 호출을 통해..
혼자 공부하는 컴퓨터구조 + 운영체제: 5. 가상 메모리 14. 가상 메모리 메모리 연속 할당 스와핑(swapping) 실행이 완료되었거나, 사용한지 너무 오래되어 현재 실행 중이지 않은 프로세스들은 메모리에서 보조기억장치로 옮겨 적재한다. 이것을 스와핑이라고 한다. 스왑 아웃: 메모리에서 보조기억장치로 나가는 것 스왑 인: 보조기억장치에서 메모리로 적재되는 것 스왑 영역: 보조기억장치 내 스와핑을 위한 일부 영역 메모리 할당 메모리 할당 방식에는 3가지가 있다. 최초 적합: 적재할 프로세스보다 큰 공간이 탐색되면 그 공간에 우선 배치하는 방식 최적 적합: 빈 공간을 모두 검색한 후, 적재할 프로세스보다 크되 가장 작은 공간에 배치하는 방식 최악 적합: 빈 공간을 모두 검색한 후, 가장 큰 공간에 적재할 프로세스를 배치하는 방식 외부 단편화 연속적으로 메모리를..
혼자 공부하는 컴퓨터구조 + 운영체제: 4. CPU 스케줄링, 프로세스 동기화, 교착 상태 11. CPU 스케줄링 CPU 스케줄링 구조입출력 집중 프로세스(I/O bound process): 비디오 출력, 디스크 백업 등 입출력이 많은 프로세스. 실제 실행보다는 입출력장치를 기다리는 대기 상태에 많이 머무른다. CPU 집중 프로세스(CPU bound process): 수학 연산, 그래픽 작업 등 CPU 연산이 많이 필요한 프로세스 기본적으로 CPU 작업에 비해 입출력장치의 속도가 느리므로, 입출력 집중 프로세스를 먼저 처리하여 입출력 집중 프로세스들을 입출력장치쪽으로 넘기는 것이 좋다. - CPU를 이용하는 작업을 CPU burst, 입출력장치를 기다리는 작업을 I/O burst 라고 한다. + 프로세스 우선순위 직접 확인하기 리눅스나 macOS의 명령어로 ps -el 을 입력하면 프로세스들의..
9혼자 공부하는 컴퓨터구조 + 운영체제: 3. 입출력 장치, 운영체제, 프로세스와 스레드 8. 입출력 장치 장치 컨트롤러와 드라이버 장치 컨트롤러 필요성 컴퓨터와 데이터를 주고 받는 모든 장치(마이크, 스피커, 프린터 등)들은 장치컨트롤러를 사용한다.입출력 구조가 다양하여 중간자 역할을 하는 장치 컨트롤러가 있어야 CPU와 규격화된 통신을 할 수 있다.CPU에 비해 데이터 전송률이 일반적으로 낮으므로 장치 컨트롤러의 버퍼가 필요하다. 장치 컨트롤러 기본 구조 장치 컨트롤러 내부에는 버퍼 역할을 하는 데이터 레지스터, 입출력 장치의 상태를 표시하는 상태 레지스터, 입출력장치가 수행할 내용을 저장하는 제어 레지스터가 있다. 장치 드라이버 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램. 각 운영체제가 이 장치 드라이버를 인식하고 실행한다. 프로그램이기 때문에 메모리에 저장되어 실행된다. 입출력..
혼자 공부하는 컴퓨터구조 + 운영체제: 2. CPU 처리, 메모리, 보조기억장치 혼자 공부하는 컴퓨터구조 + 운영체제 - 강민철 지음의 요약본이다. 5. CPU 성능 향상 기법 코어와 스레드 - 코어(Core)는 명령어를 실행하는 부품으로 ALU, 제어장치, 레지스터들이 포함된 부품을 말한다. 과거에 비해 오늘날의 CPU는 멀티 코어 CPU(멀티코어 프로세서)로 구성된다. - 명령어를 처리하는 흐름의 단위를 스레드(thread) 라고 한다. 기존에는 1개의 코어가 1개의 명령어를 처리하는 1스레드였으나, 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서 또는 멀티스레드 CPU라고 한다. 이러한 설명을 하드웨어적 스레드라고 한다. - 메모리의 각 부분에서 여러 프로그램을 동시에 실행하는 것을 소프트웨어적 멀티스레드라고 한다. - 메모리 입장에서는 2코어 4스레드..