Master Piece of jun 28

RACC와 CACC 만족하는 테스트 케이스 쉽게찾기

소프트웨어 동적분석에서 Logic Coverage로 분류되는 RACC(Restricted Active Clause Coverage)와 CACC(Correlated Active Clause Coverage)가 있다. RACC와 CACC를 만족하는 test case를 쉽게 찾는 방법을 알아보자. 좀 더 정확하게는 RACC와 CACC의 차이점 구별하는 방법을 쉽게 생각해보자. Predicates 와 Clauses 우선 기본 용어이다. predicate(술어)는 boolean으로 평가되는 표현식(expression)을 뜻한다. clause(절)은 logical operators( ! && || ..) 이 없는 predicate를 뜻한다. (a = n*o) 아래 예시에서 ..

ISA(Instruction Set Architecture)와 Machine Dependent

컴퓨터 구조나 개론 수업을 듣다보면 컴퓨터마다 다르다. 머신 디펜던트 하다. 라는 말을 듣는 경우가 많다. 이 글은 Machine Dependent(기계 종속성, 의존성)가 무엇인지, 컴퓨터 수업에서 이러한 표현이 무슨 뜻인지 이해하기위해 작성되었다. Dependent 하다 우선, '무엇인가가 어떠한 것에 의존적(Dependent)이다.' 라는 개념을 정의하려고한다. 'A는 B에 의존적이다.' 라는 표현은 A는 B가 변경되면 반드시 변경된다는 것을 의미한다. 어떻게 변경되는지(A가 어떻게 변경? B가 어떻게 변경?)는 헷갈리니 고려하지말고 B에 변경이 발생하면 A도 반드시 변경되어야한다는 사실에 주목하자. 예를 들어보면 학교의 칠판을 화이트보드로 바꾼다고 생각해보자 칠판에는 분필을 이용해 판서를 하고 화..

memory management

memory management basic 프로그램은 반드시 메모리로 가져와야한다 메인메모리, 레지스터는 CPU가 directly access할 수 있는 저장소 한 clock당 micro instruction 발생 (Register access, write Register...) 메모리는 여러 cycle이 걸린다 cache ~ ran&cpu사이의 완충제 protection of memory Register access는 cpu clock에 일어난다 ~ cpu에 버금가는 access 속도를 갖는다 clock pulse가 1일때 연산시작 0→1가는 순간 Register access, 마이크로 인스트럭션, 메모리 access 여러개의 clock필요함 ⇒ 긴 시간이 필요하다 메모리 엑세스가 많아지면 시간이 많이..

Context Switching VS Swapping CPU와 메모리에 있는 프로세스 관리하기

Context Switching CPU에서 처리할 process를 변경하는 행위 save the state of the current process load the saved state for the new process switching(할일 바꾸기)는 딱히 유용한 일이 아님. overhead 메모리 save과정.. load과정중 메모리 엑세스 시간.. CPU scheduler 다음에 실행될 프로세스를 결정해주는 프로그램 Swapping 할당된 메인메모리 공간에서 프로세스를 빼내어 하드 Disk나 SSD등 back store에 현재 상태를 저장한 뒤, 다른 프로세스에게 할당하는것 (≠kill ~ 현재상태고뭐고 다 죽임) 필요한 이유 메모리 요구사항의 변화로 과도하게 할당된 메모리공간을 다른 프로세스에게..

multi-processing VS multi-thread

multi-processing에 비한 multi-thread의 장점 time consuming(태워 버리는)이 줄어듬 process 만드는 시간이 줄어들고 process간 통신시간이 줄어듬 Computer 자원 효율성 올라감 process의 text section, data등을 공유 (같은 프로세스니까) responsiveness(민감도, 문제 상황에도 괜찮은 능력)가 줄어듬 (단점) 3 스레드 중 하나가 오류 뜨면 나머지스레드도 다 오류 multi-processing은 하나의 프로세스가 오류나도 독립적으로 실행가능 vs multiplexing : 여러 라인 중 1을 택하는 것 (control sign.. 데이터 버스..). 여러 인풋 중 하나의 결과를 결정

Process와 thread

Process란 실행중인 프로그램 프로그램 실행을 위해선 반드시 메인메모리에 적재되어야한다. 하나의 프로세스내에 여러일이 동시에 일어난다 ⇒ 멀티 쓰레드 is a unit of work Process Concept process의 4요소 ~ 메모리에 로드된 프로그램 text section (program code) stack : current activity (return 주소, 지역변수) data section (전역변수) heap : for dynamic 할당 of memory during 프로세스 실행중 stack & heap ⇒ 프로그램의 현재상태 저장 process가 active하다 ⇒ 하나의 프로그램에서 생긴 프로세스라도 heap, stack의 모습이 다르다 ⇒ 현재 상태가 다르다. 레지스터,..

System Call / API(Application Programming Interface)

System Call (interface) OS 기능 사용을 목적으로 OS function을 요청하는 것 (OS와 유저 사이의 interface) kernel mode로의 전환이 일어난다. 1. direct system call OS의 세부적인 function들을 직접호출 2. Application Programming Interface OS의 세부적인 프로그래머가 요구할 OS의 기능을 수행하기위한 function 들의 set으로 high level 언어로 쓰인 Routine으로써 system 기능을 호출할 수 있는 interface이다. API를 쓰는 이유 portability가 좋음 : API는 시스템 펀션들을 set으로써 OS의 기능을 따로 정의 해두기 대문에 다른시스템에서도 이식성이 좋다. 즉, ..

I/O sub system (memory management of I/O)

I/O sub system memory management of I/O Buffering 일단 두고 나중에 처리 완충. 충격완화 ~ 너 완전 느리니까 두고간다 데이터를 Buffer 기억공간에 일정영역에 가져다 둔뒤 나중에 알아서 처리하도록 하는 것 I/O 처리시간과 CPU 처리 시간 사이의 속도 차이를 극복하기 위함 (충격 완화) caching 빠른 속도의 작은 처리 장치 Spooling 대기열 관리 ex) 프린트 대기열

Process와 Process Concept

Process란 실행중인 프로그램 프로그램 실행을 위해선 반드시 메인메모리에 적재되어야한다. 하나의 프로세스내에 여러일이 동시에 일어난다 ⇒ 멀티 쓰레드 is a unit of work Process Concept process의 4요소 ~ 메모리에 로드된 프로그램 text section (program code) stack : current activity (return 주소, 지역변수) data section (전역변수) heap : for dynamic 할당 of memory during 프로세스 실행중 stack & heap ⇒ 프로그램의 현재상태 저장 process가 active하다 ⇒ 하나의 프로그램에서 생긴 프로세스라도 heap, stack의 모습이 다르다 ⇒ 현재 상태가 다르다. 레지스터,..

듀얼 모드(User mode & Kernel mode)

듀얼 모드(User mode & Kernel mode) 유저모드와 커널모드 구분 어떤 instruction, 커널 모드에서만 실행가능 구분하는 이유 : OS 시스템과 자원을 유저프로세스가 함부로 침범하지 못하도록 OS를 보호 System function Call 유저 프로세스 실행중 시스템 기능이 필요할때 직접 시스템 기능을 사용하는 것이 아니라, system call을 이용함 kernel 모드 전환 → OS 기능 실행 → 다시 유저모드 복귀

728x90