본문 바로가기

보관57

정규식(Regular Expression) 정규식- 문자들의 특정 패턴을 나타내기 위한 expression- 주로 검색을 목적으로 vi, grep, ex, sed 등에서 사용 정규식의 메타 문자(특수 문자)- 정규식의 행동을 제어하는 특수 문자- . * \ [ ] ^ $. any single character- '.'가 위치한 자리에 어떤 문자든 들어갈 수 있음- a.c는 aac, abc, acc, ... 등과 동일 ** 앞의 문자가 0번 이상 반복- a*c는 ac, aac, aaac, ... 등과 동일 \ Character escape- 메타 문자 의미 상실- '\' 뒤의 문자는 메타 문자로 사용되지 않음- a\.c의 '.'은 메타 문자로서의 '.'이 아닌 일반 문자 '.' ^'^' 뒤에 나오는 문자로 시작하는 문자열- ^x이면 x로 시작하는 .. 2024. 12. 8.
Linux 환경에서의 프로그램 실행 gcc: C 컴파일러$ gcc [options] FILE ...$ gcc file.c //a.out 파일 생성$ gcc -o file file.c //file 파일 생성- FILE은 무조건 C 파일(.c)- FILE을 컴파일한 실행 파일(.out) 생성- 파일명 옵션을 지정하지 않으면 컴파일 결과 a.out의 디폴트 파일명으로 생성* C++ 컴파일러는 g++library 만들기 및 사용$ ar [options] library.a file1.o file2.o file3.o- static library 파일은 (.a)r: include this(replace is exist)c: silently(if not exist)s: maintain table(symbol: file)x: extractt: print .. 2024. 12. 6.
Linux Commands Command vs. Instruction command:shell이 처리하는 cat, ls, cp, bash, vi, gcc 등(단, cd 등 내부 명령어는 bash가 직접 처리)의 독립적인 프로그램(실행 파일) instruction:CPU가 수행하는 add, sub, jump, branch, load, store 등의 기계어more$ more FILE- FILE 파일의 내용을 화면에 출력- 내용이 길 경우 한 화면씩 끊어서 보여준다는 점이 cat과의 차이- pipe("|")를 이용해 다른 프로그램과 동시에 사용되기도 less$ less FILE- 텍스트의 내용을 한 화면씩 끊어서 보여줌(more과 유사)- 앞의 내용으로 돌아갈 수 있음 date: 날짜 및 시간$ date$ date mmddhhmm- .. 2024. 12. 6.
vi editor vi는 텍스트 에디터의 한 종류로, 명령 모드와 입력 모드가 존재한다.$ vi //파일 이름 없이 vi 실행$ vi test //test라는 이름의 파일을 편집(혹은 생성) 파일의 저장과 종료키기능:w 파일명을 filename으로 하여 저장하고 수행을 계속:w현재 이름으로 저장하고 수행을 계속:w!경고 메시지 없이 무조건 저장:q편집한 내용이 없을 경우 수행 종료:wq현재 이름으로 저장하고 수행 종료:q!편집한 내용을 저장하지 않고 수행 종료:sh일시적으로 쉘 프롬프트 상태로 전환w가 포함된 명령어는 저장, q가 포함된 명령어는 종료와 연관이 있는 것을 확인할 수 있다. 텍스트 입력 모드키기능i텍스트가 커서 앞에서 삽입a텍스트가 커서 뒤에서 삽입o텍스트가 현재 줄 다음부터 삽입O텍스트가 현재 줄 앞에서.. 2024. 12. 6.
파이프라이닝 pipelining(2) - hazard Pipelining and ISA DesignRISC-V는 파이프라이닝에 유리한 ISA인데, 모든 명령어들이 32bit 길이이므로 한 사이클 내에 fetch 및 decode하기가 용이하다. 파이프라이닝(1)의 빨래 예시에서 확인할 수 있듯, 파이프라이닝 기법을 사용하면 명령어 처리 시간을 줄이지 않고 같은 시간 안에 더 많은 데이터를 처리할 수 있다. 하지만 빨래 예시와는 다르게 매 clock cycle마다 명령어를 처리할 수 없는 경우가 존재한다. 양말 한 켤레를 실수로 빨래 더미 A와 B에 나누어 넣었을 때, A에서 짝을 맞춰 양말을 개고 넣기 위해서는 아래 그림과 같이 B 더미의 건조 과정이 끝날 때까지 한 사이클만큼의 공백이 생긴다.이때 명령어를 처리하지 않고 대기하도록 하는 것을 bubble이라.. 2024. 11. 20.
파이프라이닝 pipelining(1) 파이프라이닝이란 동시에 여러 명령어를 실행하여 명령어 처리 효율을 높이는 기법이다. 많이들 사용하는 빨래 예시로 설명해 보겠다. 빨래를 하는 과정은 세탁기 돌리기, 건조기 돌리기, 빨래 개기, 빨래 넣기의 4단계로 이루어져 있는데, non-pipelined 방식으로 빨래를 하면 다음과 같다. 하지만 실제로 이렇게 빨래를 하는 사람은 거의 없을 것이다. 보통은 빨래가 돌아가는 동안 빨래를 개는 등 작업을 병행하는데, 이것이 바로 파이프라이닝이다. 위 예시에서 각 단계별로 1시간이 소요되므로, n개의 빨래 더미(load)와 빨래를 끝마치는 데 필요한 작업의 수(task) k에 대한 총 작업 소요 시간은 \(\text{without pipelining: }kn\)\(\text{with pipelining: }.. 2024. 11. 4.