전체 글 205

레지스터 종류

PCB 내부에 무엇이 들어있나 갑자기 궁금해졌다.그 안에는 레지스터의 여러 종류들이 보였고,레지스터에 대해 좀 더 알고 싶어서 포스팅을 만든다. ✨ Address Registers PC (Program Counter, 프로그램 카운터)PC는 일반적으로 순차적으로 진행현재 실행 중인 명령어의 다음 위치 가르키는 주소 저장순차적 실행 흐름이 끊기는 경우특정 메모리 주소로 실행 흐름을 이동하는 명령어 인터럽트 발생 함수 호출 시 PC 값을 스택에 저장하고, 함수 호출이 끝나면 스택에 저장된 값이 다시 PC로 복귀MAR (Memory Address Register, 메모리 주소 레지스터)메모리에서 데이터를 읽거나 쓸 때 필요한 메모리 주소 저장SP (Stack Pointer, 스택 포인터)스택 구조에서 가장 최..

CS 2024.11.04

Pintos Project1 -키워드 정리 (코드로 이해하기) / 프로세스, 스레드, 멀티 스레딩 문제

프로세스 (Process) / 스레드 (Thread) 프로세스 (Process)실행 중인 프로그램의 인스턴스독립적 메모리 공간각 프로세스는 각각 독립된 메모리 공간을 가짐다른 프로세스가 접근 불가능고유한 자원 CPU, 메모리, 파일 핸들 등의 자원을 OS로 부터 할당주소 공간 분리프로세스는 독립된 주소 공간을 가짐다른 프로세스의 메모리에 직접 접근 불가능IPC (Inter-Process Communication) 독립된 메모리를 관리하여 컨텍스트 스위칭으로 오버헤드 프로세스 예시#include #include #include int main() { pid_t pid = fork(); // 새로운 프로세스 생성 if (pid This is the parent process. PID: 1234T..

CS 2024.11.02

Pintos Project1 - 시작 준비

✨ Pint OS Pintos는 x86-64 아키텍처용으로 설계된 간단한 운영체제 프레임워크Pintos는 커널 스레드, 사용자 프로그램 로딩 및 실행, 파일 시스템을 지원 Pint OS projects Project 1 (Threads): 스레드와 동기화 기초, 기본 스케줄링Project  2 (User Programs): 사용자 프로그램 로딩 및 시스템 호출 구현Project  3 (Virtual Memory): 가상 메모리 관리Project  4 (File System): 파일 시스템 확장 Pint OS projects1  주요 내용기본 스레드 시스템 확장:Pintos에 구현된 간단한 스레드 시스템이 시작점다양한 스레드 관련 기능을 추가 및 동작 방식을 개선 동기화 문제 해결:스레드 시스템의 확장은 ..

크래프톤 정글 2024.11.02

네트워크 소켓 및 함수 정리 (CS:APP)

✨ getaddrinfo( )int getaddrinfo(const char *hostname, const char *port, const struct addrinfo *hints, struct addrinfo **result); hostname과 port로 소켓 주소를 얻음IPv4 / IPv6 모두를 지원hostname은 얻고자 하는 호스트 이름  (NULL은 로컬 호스트 주소)hints는 결과 리스트 필터링을 위한 옵션 result 는 결과 리스트의 헤드성공 시 0을 반환 / 실패 시 오류 코드 반 ✨ socket( )int socket(int domain, int type, int protocol);네트워크 통신에서 사용되는 소켓 생성domain은 통신에 사용될 주소 체계 ( AF_INET(IP..

CS 2024.10.29

네트워크 핵심 키워드 정리 (네트워크 계층,소켓,CGI,HTTP,Proxy 등등)

📌 파일 디스크립터 (file descriptor)프로세스가 파일이나 입출력 장치에 접근할 떄 사용하는 일종의 "핸들"(여기서 핸들은 실제 자원과 프로세스 간의 연결을 추상화한 정수 값) 1. 파일 열기open() open() 함수로 시스템 호출을 사용한다. 호출이 성공하면 운영체제는 파일 테이블에 새 항목을 추가하고,참조할 수 있는 파일 디스크립터(정수)를 반환한다.  예를들어 파일을 열때 파일 디스크립터로 3이라는 숫자를 반환 받으면,프로세스는 3을 사용해서 그 파일에 접근 (보통 0,1,2는 기본적으로 표준 입력, 출력, 오류에 할당되어 3부터 시작됨) 2. 파일 읽기와 쓰기파일 디스크립터를 이용해아래와 같은 시스템 호출을 통해 데이터를 읽거나 쓸 수 있다.read(fd, buffer, size)..

CS 2024.10.28

팀 스파르타 채용 설명회

✨팀 스파르타   1. 팀 스파르타는 어떻게 일하나요 ?1. 치열하게 일하고  그안에 사람이 있다는 걸 잊지 않고 개인의 성장을 진심으로 배려하는 문화2. 와우함 - 위트 있는 곳3. 잘 쉴 수 있는 회사 스파르타  2. 누구나 개발자로서 성장하는 법1. 내가 운전대를 잡는다고 생각하자.(즉, 스스로 고민하면서 결정하고 배포를 온전히 할 수 있다.) 2. 사고 또는 실수에서 배운다. 3. 좋을 개발자가 되는것은  단순히 코드를 잘 짜는게 아니라,이 코드가 어떻게 비지니스에 임팩트를 입힐지 고민하는 사람-> 이것들을 고민하는게 미래의 좋은 개발자가 될 것이다.  좋은 방법을 알고 -> 좋은 방법을 실천하고 -> 돌아보고 -> 좋은 방법을 알고 ->  (반복) (스파르타 팀에 오면 3년 후에 시장에서 못 가..

크래프톤 정글 2024.10.26

[Python][백준] 13144. List of Unique Numbers / 투포인터 (G4)

🔗링크 :  https://www.acmicpc.net/problem/13144🗒️파이썬 코드 풀이import sysinput = sys.stdin.readlineN = int(input())lst = list(map(int,input().split()))number = set()rs = sp = 0 for ep in range(N): while lst[ep] in number: number.remove(lst[sp]) sp += 1 number.add(lst[ep]) rs = rs + ep - sp + 1print(rs)ex)1 2 3 1 2 1. 위와 같은 입력을 예시로 들어보자. 아마 대부분의 보통은 1 / 1,2 / 1,2,3 /  2 / 2,3 / ..

[Python][백준] 14891. 톱니바퀴 / 시뮬레이션,구현 (G5)

🔗링크 :  https://www.acmicpc.net/problem/14891🗒️파이썬 코드 풀이import sysfrom collections import dequeinput = sys.stdin.readline# 방향 로테이션def wheel_rotate(graph,i,dir): graph[i].rotate(dir) return # 방향 로테이션 스택에 넣어주기def stack_rotate(graph,n,dir): stack = [(n,dir)] rdir = -dir for i in range(n,0,-1): if graph[i][6] != graph[i-1][2]: stack.append([i-1,rdir]) ..