Computer Science 37

[SEMI] PIO 통신이란?

PIO 통신 Parallel Input Output : 평행 입출력 통신 I/O 상태를 전당하는 입출력 =E84 통신 : SEMI 규약으로 장비 간 제품 이동 시 사용 물류장비들을 조작하는 AMHS(Controller), Equipments 간 통신 I/O 8 bit로 통신 Active는 IB 장비들, Passive는 STK 혹은 EQP Active와 Passive 장비들 간의 이동을 시나리오에 따라 통신하는 과정. LR, UR, READY, BUSY, COMPLETE 등. [예시 영상](https://www.youtube.com/watch?v=6qPP4I5hx3Q&t=5s) Reference [Youtube 깹 tv](https://www.youtube.com/watch?v=6qPP4I5hx3Q&t=5s)

[OS] 메모리 관리

이화여대 반효경 교수님의 강의를 보며 정리했습니다. 결론은 메모리관리 영역에서 가상메모리나 swap부분을 제외하고 운영체제의 역할은 미미하다는 것. 메모리접근, 물리 주소 할당등은 MMU나 TLB의 영역이라는 것. 메모리관리 메모리접근, 주소 변환에서 운영체제의 역할은 하나도 없음 전부 하드웨어의 영역. 운영체제는 I / O 접근만 관여함. 주소 논리 주소(Logical Address = virtual address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작 CPU가 보는 주소는 logical address임 물리 주소(Physical address) 메모리에 실제 올라가는 위치 주소 바인딩 : 주소를 결정하는 것. Symbolic Address -> Logical Add..

[객체지향] OOP와 객체지향 패턴, Grasp 패턴 정리

프로그래밍 문제를 분석해 문제를 해결하는 방법과 과정. (Problem Solving) 조직화하는 것을 '설계'라 함. 구조적 프로그래밍에서의 분할기준은 프로시저(절차, 함수). 절차지향과 차이점은 캡슐화, 다형성, 상속 지원, 데이터 접근 제한을 걸 수 있는지 여부. 효율적으로 하기 위한 방법론 중 하나가 객체지향. 알고리즘은 수학적인 풀이. 하지만 이로 모든 문제를 해결 할 수 없음. 객체지향은 어떤 문제를 잘게 나눠서 각각의 능동적인 주체로 만들기 위함. 잘게 나눈 객체들을 조합해 큰 문제를 해결하는 Bottom-Up 지향 큰 문제를 10개로 나눠 할당하고 각 주체가 자기가 맡은 책임에 대해 해결을 위해 '자율적'으로 노력하고 '협업'하기 위한 패러다임. 즉 객체지향에서 우리가 배워야 할 것은 '협..

[OS] 리눅스의 메모리 관리

10분 테코톡 시청 후 작성했습니다. https://www.youtube.com/watch?v=qxmdX449z1U 리눅스란? 리누스 토르발스가 개발한 OS 자유 소프트웨어와 오픈 소스 개발의 표본 다중 사용자, 다중 작업(멀티 테스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS) 즉 서버에 적합한 운영체제이다. 메모리란? 넓은 의미로 기억 장치 전부 좁은 의미로 메인 메모리(RAM) 컴퓨터의 유일한 작업공간.(프로세스는 cpu에서 실행x 반드시 메모리에 적재 후 실행 가능) 주소덩어리이며 주소로 인덱싱하는 커다란 배열. 컴퓨터가 켜지면 메모리에 운영체제나 프로세스들이 적재되고 CPU를 점유할 기회를 노림. 메모리의 코드 -> 컴파일러(코드 주소 결정) -> CPU Symbolic Address..

[OS] 가상 메모리(Virtual Memory)와 페이징

가상메모리(VM != Virtual Machine) 다중 프로그래밍 = 많은 프로세스를 동시에 메모리에 올려야함. 프로세스 전체가 메모리에 올라오지 않더라도 실행이 가능하도록 하는 기법. 물리 메모리보다 프로그램이 커도 된다. 메모리 오버레이 기법에서 나머지를 관리하기 위한 공간 보통 SSD로 C드라이브가 아닌 D드라이브 등에 가상메모리를 설정하는게 좋음. 만약 C가 SSD고 D가 HDD면 그냥 C에 설정. 윈도우 가상메모리 파일 이름은 pagefile.sys 개발 배경 가상메모리 이전 : 모든 코드는 물리메모리에 존재. 메모리 용량보다 큰 프로그램 실행 불가. 용량의 한계, 페이지 교체 등 성능이슈. 가끔 사용하는 코드가 항상 메모리에 올라올 필요 x 가상 메모리를 사용하면? 물리 메모리 크기에 제약 ..

[CS][Network] Load Balancing 로드 밸런싱

Load Balancing 부하분산 : 해야 할 작업을 나눠서 서버의 부하를 분산시키는 서비스. request를 각각 서버들이 원하는 대로 나눠주는 것. 서비스 이용자가 많아지며 트래픽을 현재의 서버로 감당하기 힘들어져 나온 개념.(Scale Out) 서비스 트래픽 증가로 인해 하나의 서버로 감당이 불가능 => Scale UP!(서버 성능을 올리자!) 그래도 안 돼? => Scale Out!(여러대의 서버로 나누자!) 미리 측정된 웹 서버의 능력에 따라 분배 or 서버의 부하상태에 따라 분배. 부하 할당 알고리즘 Round Robin 단순히 Round Robin으로 분산하는 방식입니다. Least Connections 연결 개수가 가장 적은 서버를 선택하는 방식입니다. 트래픽으로 인해 세션이 길어지는 경..

[OS] 페이징과 세그멘테이션, 메모리관리

페이징과 세그먼테이션 기법을 쓰는 이유 다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리 작업이 필요해서 메모리 관리 배경 각각 프로세스 는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한있음. 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않음. Swapping : 메모리의 관리를 위해 사용되는 기법. 표준 Swapping 방식으로는 round-robin 과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(e.g. 하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다. 이 과정을 swap이라함. 주 기억장치(RAM)..

[Computer Structure] CPU

중앙처리장치(CPU) CPU와 메모리는 IC(integrated Circuit)로 불리는 전자부품(마이크로 칩) 컴퓨터에서 가장 핵심적인 역할을 수행하는 부분. '인간의 두뇌'에 해당 연산장치, 제어장치, 레지스터 로 구성됨 연산 장치 산술연산과 논리연산 수행 (=산술논리연산장치라고) 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보냄 제어 장치(스케줄링을 제어하는 장치) 명령어를 순서대로 실행할 수 있도록 제어하는 장치결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치로 보냄 또한 이들 장치가 보낸 신호를 받아, 다음에 수행할 동작을 결정함 주기억장치에서 프로그램 명령어를 꺼내 해독하고, 레지스터(기억 장치) CPU의 속도와 비슷한고속 기억장치.용..

[OS] CPU Scheduling : 프로세스를 .CPU에 할당하는 방법들

CPU Scheduling 스케줄링 실행준비가 된 프로세스 중에서 하나를 선택해 CPU를 할당 하는 것. 결국 CPU를 잘 사용하기 위해 프로세스를 잘 배정하기 위함. 조건 : 오버헤드는 낮고, 사용률은 높고, 기아 현상은 낮을때. 목표 Batch System : 가능하면 많은 일을 수행한다. 시간(time)보다 처리량(throughout)이 중요하다. Interactive System : 빠른 응답 시간, 적은 대기 시간 Real-time System : 기한(deadline) 맞추기 선점 / 비선점 스케줄링 선점(preemptive) : OS가 CPU의 사용권을 선점 할 수 있는 경우, 강제 회수하는 경우 비선점(nonpreemptive) : 프로세스 종료 or I/O 등의 이벤트가 있을 때까지 실행..