LR 파싱과정 - LR 파싱은 Bottom-up 파싱 기법 중 하나로, LR 분석기를 사용하여 문법을 분석합니다. 이것은 스택(stack)과 상태(state)를 사용하여 해석과정을 진행합니다. LR 파싱 과정은 다음과 같이 진행됩니다. 파서 생성 : LR 파싱을 위해 파서 생성기를 이용해 파서를 생성합니다. LR 아이템 생성 : 각 규칙마다 LR 아이템을 생성합니다. 상태 생성 : LR 아이템을 이용 하여 파싱 테이블의 상태를 생성합니다. 파싱 테이블 생성 : 생성된 상태를 이용하여 파싱 테이블 생성 파싱 : 생성된 파싱 테이블을 이용하여 입력을 분석하고 문법 규칙에 따라 파싱을 수행합니다. 예를 들어 E -> E+T | T T -> T*F | F F -> (E) | i 다음과 같은식을 SLR파싱 테이블..
시그널이란? -운영체제나 프로세스 간의 정보를 전달하는데 사용되는 중요한 비동기적 메세지입니다.예기치않은 상황이 발생했을 때 프로세스에게 알리는 역할을 하거나, 이벤트에 대한 알림을 받는 용도로 주로 사용됩니다. 시그널은 다양한 이벤트에 대한 알림을 전달받기 위해 사용되며,일반적으로 작은 크기의 데이터만 전달 할 수 있기에, 대량의 데이터를 주고받는거에는 적합하지 않습니다. 시그널을 통해 프로세스간 통신(interprocess communication)이 가능하게하고, 프로그램의 동시성(concurrency)을 제어할 수 있습니다. 또한, 시그널은 운영체제에 따라 동작이 달라질 수 있어, 주의해야합니다. 시그널 특징 비동기성(Asynchrony) -시그널은 비동기적으로 발생하며, 프로세스의 상태에 관계없..
클래스 다이어그램이란? -객체지향 소프트웨어 개발에서 가장 기본적인 다이어그램중 하나입니다. 주로 시스템을구성하는 클래스들의 정적인구조와 관계를 표현합니다. 이 다이어그램은 인스턴스 클래스가 있고, 그들간의 상속,연관관계,의존관계 등을 보여주며, 시스템의 구성요소와 이들간의 관계를 시각화하여 개발자들이 시스템 구조를 이해하고 구현하기 쉽게 도와주는 다이어그램입니다. 클래스(Class) -객체의 클래스를 나타냅니다. 객체지향에서의 클래스의 개념과 같이 클래스의 이름,속성, 메서드 등이 존재합니다. 이런 개념을 표시하기위해 다양한 표시가 있습니다. "" 표시를 통해 인터페이스,추상클래스등의 개념도 적용가능합니다. Person -age : int -name : String height : float +wear..
DFD란? ->DFD란 데이터 흐름도의 약자 입니다. 소프트웨어 개발에서 시스템의 데이터 흐름과 처리 과정을 그림으로 표현하는 기술 중 하나입니다. 데이터 흐름을 나타내는 화살표와 데이터 처리내용을 나타내는 도형으로 구성됩니다. 이것으로 시스템의 전반적인 흐름을 파악할 수 있으며, 요구사항 수집과 분석, 시스템 설계,구현, 테스트, 유지보수 등의 다양한 단계에서 활용될 수 있습니다. 터미널 (External Entiy) - 시스템과 상호작용을 하는 외부요소를 나타냅니다. 시스템과 상호작용하는 개체의 명칭과 특징을 기술합니다. 프로세스(Process) : 시스템 내에서 처리되는 기능이나 작업을 나타냅니다. 기능을 구체화하여 명확하게 정의하고, 이름을 붙여 구분할 수 있습니다. 데이터 흐름 (Data Flo..
*공부 기록용으로 하는 블로그입니다.잘못된 개념이나 오타가 있을 수 있습니다. 잘못된 정보알려주시면 수정하겠습니다!* 산술 연산: add: 덧셈 sub: 뺄셈 mul: 곱셈 div: 나눗셈 inc: 증가 연산 dec: 감소 연산 비트 연산: and: 논리곱 or: 논리합 xor: 배타적 논리합 not: 비트 반전 시프트 연산: shl: 왼쪽 시프트 shr: 오른쪽 시프트 논리 연산: test: 논리곱 연산 결과를 플래그 레지스터에 저장 cmp: 비교 연산 결과를 플래그 레지스터에 저장 분기 연산: jmp: 무조건 분기 jz, je: 제로 플래그가 설정될 경우 분기 jnz, jne: 제로 플래그가 설정되지 않을 경우 분기 ja, jnbe: 양수 플래그와 캐리 플래그가 모두 클 경우 분기 jb, jc, jn..
*공부 기록용으로 하는 블로그입니다.잘못된 개념이나 오타가 있을 수 있습니다. 잘못된 정보알려주시면 수정하겠습니다!* 링커란? -여려개의 오브젝트 파일에 있는 코드와 데이터를 모아서 연결하여 실행파일을 만드는 링킹(Linking)이란 작업을 하는 프로그램이다. 이것으로 인해 한개의 소스파일로 구성한 후 별도로 수정을 할 수 있고 더 세분화하여 개발이 가능해졌다.링커는 보통 오브젝트 파일에서 참조하는 함수,변수유무를 확인하고 여러 파일의 코드와 데이터섹션을 하나로 합쳐주는 작업을 합니다. 링커의 장점 -모듈화가 가능함 : 큰 파일하나를 세분화하여 나눠 여러개의 모듈로 만들 수 있다 이렇게 하면 코드의 유지보수성이 좋아지고 가독성도 좋아진다. -컴파일 간소화 : 만약에 약간의 기능을 수정해야하는데 소스코드가..
*공부 기록용으로 하는 블로그입니다.잘못된 개념이나 오타가 있을 수 있습니다. 잘못된 정보알려주시면 수정하겠습니다!* fork()란? -fork함수는 운영체제에서 사용되는 시스템 콜 중 하나입니다.함수를 호출한 프로세스를 복사해 자식프로세스를 만드는 기능을 합니다. 즉 원래 프로세스는 부모 프로세스가 되는것이고 복사한 프로세스는 자식 프로세스가됩니다. fork 함수는 리턴값이 생성된 프로세스의 pid입니다. 즉 자식 프로세스의 pid값을 리턴하게 됩니다. 부모 프로세스에서는 pid가 자식프로세스의 pid값일 것이고, 자식프로세스는 0이 리턴됩니다. 이 자식프로세스는 부모프로세스와 동일한 코드, 데이터,힙을 공유하지만 스택은 따로 가집니다. 그래서 두 프로세스 모두 fork() 호출 이후의 코드를 똑같이 ..