- [ 컴퓨터 과학/운영체제 ][CS] 명령어의 구조와 명령어 주소 지정 방식2022-12-27 23:41:05프로그램을 개발할 때 우리는 '소스코드' 를 작성하고, 컴파일러를 통해 컴파일 되어 컴퓨터가 이해할 수 있는 '저급 언어'로 변환되어 실행된다. 저급 언어는 명령어들로 이루어져 있는데, 그럼 명령어 하나하나는 어떻게 생겼을까? *참고: 저급언어는 기계어, 어셈블리어로 구성되어 있다. 둘 다 명령어의 집합임 명령어의 구조 사람이 누군가에게 명령을 한다면 아마 이런식으로 명령을 할 것이다. "학생들, 다음 주까지 과제를 제출하세요." 컴퓨터의 명령어 구조도 이와 마찬가지다. 컴퓨터는 '무엇을 대상으로, 무엇을 수행하라' 식의 명령어 구조를 가지고 있다. 컴퓨터는 아래의 사진과 같이 명령어 구조를 이루고 있다. 왼쪽에는 수행할 연산, 오른쪽은 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치를 담..
- [ 컴퓨터 과학/운영체제 ][CS] 공유 자원(Shared Resource)과 임계구역(Critical Section), 세마포어(Semaphore) - 추가예정2022-12-21 11:00:28프로세스는 독립적으로 작업을 할 수도 있고, 공유된 자원을 가지고 공동 작업을 할 수도 있다. 하지만 여러 프로세스가 한정된 자원을 가지고 공동으로 작업할 때 발생할 수 있는 문제와 이를 해결할 수 있는 방법을 알아보고자 한다. 공유 자원의 접근 공유 자원(Shared Resource)은 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말한다. 공유 자원은 공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있다. **따라서 프로세스들의 공유 자원 접근 순서를 정하여 예상치 못한 문제가 발생하지 않도록 해야 한다.** HTML 삽입 미리보기할 수 없는 소스 임계구역(Critical Section) 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의..
- [ 컴퓨터 과학/운영체제 ][CS] CGI(Common Gateway Interface), 웹 컨텐츠의 이해(정적, 동적)2022-12-11 22:49:49CGI(Common Gateway Interface)란? CGI란 공통 게이트웨이 인터페이스(Common Gateway Interface)의 약어로, 웹 서버와 외부 프로그램 사이에서 정보를 주고받는 방법이나 규약들을 말한다. 웹 서버와 응용프로그램이 상호 작용하여 동적 컨텐츠를 제공해주고, 웹 서버와 수많은 언어들로 만든 프로그램이 상호 작용하기 위한 표준화 된 약속이 필요한데, 바로 그 약속이 CGI(Common Gateway Interface) 기술이다. CGI의 기능 웹 서버 프로그램의 핵심 기능은 미리 준비된 정보를 클라이언트의 요구에 응답하는 것이다. 즉, 초기의 웹 서버는 이미 준비된 자료인 '정적 컨텐츠'의 정보만 제공해 줄 수 있었다. 사용자로부터 입력을 받아 정보를 동적으로 생성하고 클..
- [ 컴퓨터 과학/운영체제 ][CS] 커널(Kernel) & 시스템 콜(System Call) & 인터럽트(Interrupt)2022-12-04 00:27:07커널(Kernel)과 인터페이스(Interface) 커널(Kernel) 커널(Kernel)은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 자동차에 비유하자면 엔진에 해당된다. 자동차는 종류가 다양하지만 성능은 엔진이 좌우하는데, 이와 마찬가지로 운영체제의 성능은 커널이 좌우한다. 커널이 존재하는 이유는 시스템을 보호하기 위해 존재한다. 만약 커널이 없다면 우리가 작성한 프로그램이 함부로 하드웨어 자원을 다 점유해서 사용하고, 그래서 다른 프로세스가 영향을 받게되고, 그러다보면 전체 시스템이 붕괴될 수 있는 여러 가지 위험한 부분들을 방지하기 위해 시스템에 전반된 부분이나 하드웨어에 관련된 부분은 커널이 관리하게 된다. 따라서 우리가 작성한 프로그램은 커..