본문 바로가기

📂 Engineering/🔹 CS & OS18

PCB(Process Control Block) PCB에 담기는 정보들 Process state -> 프로세스의 상태(new, ready, running, waiting, halted 등) Program counter -> 다음에 이 프로세스를 위해 CPU가 실행시킬 instruction의 주소 CPU registers -> 이 프로세스가 인터럽트나 context_switch 등에 의해 중단되었다가 다시 실행될 때 올바르게 실행되기 위해 필요한 레지스터의 정보들 CPU-scheduling information -> 스케줄링을 위해 필요한 정보들(프로세스 우선순위 등) Memory-management information -> 기본 및 제한 레지스터의 값과 페이지 테이블 또는 세그먼트 테이블과 같은 항목 Accounting information -> 사.. 2022. 5. 30.
쉘이 명령어를 실행시키는 방법 초기 상태: 쉘이 사용자의 입력을 wait하고 있음 사용자가 "ls"를 입력 쉘 프로세스는 fork로 자식 프로세스를 만든다.(아직 CPU는 부모 프로세스에게 있음) 쉘 프로세스는 나머지 명령어를 수행하고 wait를 호출한다.(waiting queue, sleeping queue에 간다) context_switching이 실행되고 자식 프로세스에게 CPU가 주어진다. 자식 프로세스는 exec를 호출해 disk에서 1에서 받은 command line에 해당하는 실행가능파일을 load해 자신의 이미지를 덮어쓴다. (원래는 부모 프로세스와 같은 이미지였으나 새로운 이미지가 덮어써진다.) exec 덕분에 자식은 새로 덮어쓴 이미지의 main함수부터 새출발한다. 자식은 main 루틴을 수행하고, exit을 호출한.. 2022. 5. 30.
[python] 뮤터블과 이뮤터블 변수 - 왜 튜플과 문자열은 값을 바꿀 수 없을까 파이썬 기본 강의에서 항상 나오는 내용 중에 이런 게 있습니다. 리스트는 값을 바꿀 수 있고 튜플은 바꿀 수 없습니다~ 값이 바뀌면 안 되는 경우에는 튜플을 쓰세요~ 파이썬으로 처음 배워서인지 그냥 그런갑다~ 하고 넘겼는데 책에서 뮤터블과 이뮤터블의 개념과 함께 나오니까 영 처음 보는 생소한 개념이었습니다. (역시 공부는 근본이 있어야 한다) 그래서 오늘은 크게는 뮤터블 vs 이뮤터블, 작게는 리스트 vs 튜플을 비교하고 알아보려고 합니다. 뮤터블, 이뮤터블의 의미 어떤 객체들의 값은 변경할 수 있습니다. 값을 변경할 수 있는 객체들을 가변(mutable) 이라고 합니다. 일단 만들어진 후에 값을 변경할 수 없는 객체들을 불변(immutable) 이라고 합니다. ... 숫자, 문자열, 튜플(tuple)은.. 2022. 4. 2.
[알고리즘] 이진탐색에서 한 나의 실수 1. left와 right 초기화 단순히 리스트의 길이를 right로 초기화 하면 인덱스의 길이와 맞지 않아 런타임 에러(IndexError)가 발생한다. lst = [1,2,3,4] # 인덱스의 최대값은 3, 길이는 4 left, right = 0, len(lst) -1 # 여기서 1을 빼주지 않으면 lst[4]를 할 수 있어 인덱스 에러 발생 2. while left target: right = mid - 1 elif ns[mid] < target: left = mid + 1 2022. 2. 19.