Skip to content

marona42/univ-assignments

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

과제 레포지토리

브랜치별로 학부과정 중 했던 개인 과제를 정리하는 레포지토리입니다.

브랜치 소개

컴파일러

cp

yacc를 이용, 유사 C언어 컴파일러 제작 소스로, 신택스 분석기, 시멘틱 분석기를 제작하고 코드 생성기를 통해 C언어 소스 코드를 파싱하고 기계어 코드를 생성합니다.

리눅스시스템프로그래밍

lspp2

유닉스/리눅스 환경에서 특정 디렉토리 아래 파일의 변경 상태를 모니터링하여 로깅합니다.
이외 기능은 다음과 같습니다:

  • DELETE [FILENAME] [END_TIME] [OPTION]
    • 지정한 삭제 시간(END_TIME)에 자동으로 파일을 삭제합니다.
    • FILENAME은 상대경로, 절대경로 모두 가능합니다.
    • 옵션을 통해 trash 디렉토리로 이동하지 않고 바로 파일을 삭제하거나, 삭제시 삭제 여부를 재확인할 수 있습니다.
  • SIZE [FILENAME] [OPTION]
    • FILENAME의 파일 크기를 출력합니다.
    • 문자열 오름차순으로 출력되며, 경로는 상대경로로 출력됩니다.
    • 옵션을 통해 깊이 d 만큼의 하위 디렉토리까지 출력할 수 있습니다.
  • RECOVER [FILENAME] [OPTION]
    • trash 디렉토리 안의 파일을 원래 경로로 복구합니다.
    • 동일한 이름의 파일이 trash 안에 있을 경우, 사용자 선택을 하며 복구시 중복될 경우 앞에 숫자를 추가합니다.
    • 옵션을 통해 삭제 시간이 오래된 순으로 출력후 진행 할 수 있습니다.
  • TREE
    • 모니터링 중인 디렉토리를 tree 형태 그림으로 출력해 보여줍니다.
  • EXIT
    • 프로그램을 종료시킵니다.
  • HELP
    • 프로그램 사용법을 출력합니다.

lspp3

리눅스 시스템 상에서 파일이나 디렉토리를 동기화하는 rsync와 주기적으로 실행하고자 하는 명령으를 등록하고 실행하는 crontab을 구현합니다.

  • crontab
    • ssu_crontab_file에 명령어를 저장 및 삭제합니다.
    • ssu_crond 프로세스가 상주해 주기적으로 실행시킵니다.
    • 명령어가 정상적으로 실행된다면 ssu_crontab_log에 로깅합니다.
    • ssu_crontab_log에는 명령어가 추가, 제거될 때에도 로깅됩니다.
  • rsync
    • src 디렉토리(및 파일)와 dst 디렉토리를 동기화합니다.
    • 옵션을 통해 서브디렉토리를 포함할 수 있고, dst 디렉토리는 src에 존재하지 않는 디렉토리나 파일을 삭제할 수도 있습니다. 그리고 tar로 묶어 동기화 또한 가능합니다.

운영체제

osp3

  • xv6 환경을 세팅하고, 관련 작업을 합니다.
    • 새 시스템 콜 추가 및 새 시스템 콜을 테스트하는 프로그램 구현
      • 간단한 문구 출력: hello(), hello_name()
      • 프로세스 정보를 출력하는 시스템 콜: get_num_proc(), get_max_pid(), get_proc_info()
      • 스케쥴러를 위한 시스템 콜: set_prio(), get_prio()
    • 우선순위 기반 RR 스케쥴러 구현
      • 기본 RR 스케쥴러에서 추가한 시스템 콜을 기반으로 하는 우선순위 기반 RR 스케쥴러를 구현
      • 새로운 스케쥴러 테스트 및 검증

osp4

  • 다중 스레드 관련 프로그램을 구현합니다.
    • master-worker 스레드 풀을 구현합니다.
      • 마스터 스레드가 숫자를 생산하고, 워크 스레드가 정확히 한 번 소비합니다.
    • reader-writer locks 스레드 구현 -read/write lock을 정의, 구현하고 구현한 내용을 테스트합니다.
    • 사용자 수준 세마포어를 구현합니다.
      • 커널 제공 세마포어와 충돌하지 않는 사용자 수준의 세마포어입니다.

osp5

  • 메모리를 동적으로 할당하는 사용자 지정 메모리 관리자를 구현합니다. (alloc.c)
    • 메모리 구조를 정의해 구현합니다.
    • 메모리 할당, 해제 함수를 구현합니다.
    • 메모리를 관리하는 관리자를 구현합니다.
  • 확장가능한 heap을 구현합니다. (elloc.c)

osp6

  • 가상 디스크를 위한 파일 시스템과 그 기본 파일 동작을 구현합니다.
    • 제공된 가상 디스크 에뮬레이션 코드를 해석하여 요구되는 기능을 구현합니다.
      • 파일 생성
      • 파일 삭제 (존재하는 경우에만)
      • 파일 열기
      • 파일 닫기
      • 파일 n바이트 읽기
      • 파일 n바이트 쓰기
      • 파일 오프셋 증가

About

remote assignment git

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published