mirror of https://github.com/t1meshift/os_labs.git
				
				
				
			Update 5th lab
							parent
							
								
									037a74ed69
								
							
						
					
					
						commit
						9e82285e43
					
				
							
								
								
									
										153
									
								
								lab5/README.md
								
								
								
								
							
							
						
						
									
										153
									
								
								lab5/README.md
								
								
								
								
							|  | @ -1,3 +1,156 @@ | ||||||
| # Лабораторная работа №5 | # Лабораторная работа №5 | ||||||
| 
 | 
 | ||||||
| ## Задание 1 | ## Задание 1 | ||||||
|  | 
 | ||||||
|  | Результат выполнения: | ||||||
|  | ```text | ||||||
|  | creat() call: 0.000350s | ||||||
|  | write 300KiB: 0.000346s | ||||||
|  | fsync() call: 0.005649s | ||||||
|  | close() call: 0.000011s | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Задание 2 | ||||||
|  | 
 | ||||||
|  | Результат выполнения: | ||||||
|  | ```text | ||||||
|  | creat() call: 0.000262s | ||||||
|  | write() call: 0.000275s | ||||||
|  | close() call: 0.000357s | ||||||
|  | POSIX API: 0.001043s | ||||||
|  | fopen() call: 0.000206s | ||||||
|  | fwrite() call: 0.000258s | ||||||
|  | fclose() call: 0.000455s | ||||||
|  | stdio.h API: 0.000968s | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | При многократном выполнении время сильно разнится, порой не в пользу POSIX API. Для повышения  | ||||||
|  | точности таймера следует значительно увеличить размер файла. | ||||||
|  | 
 | ||||||
|  | ## Задание 3 | ||||||
|  | 
 | ||||||
|  | Была реализована упрощённая версия команды `tail`. По умолчанию она читает последние 10 строк, | ||||||
|  | но это поведение можно изменить параметром `-n`, где `n` -- количество строк (например, `-24`) | ||||||
|  | 
 | ||||||
|  | ## Задание 4 | ||||||
|  | 
 | ||||||
|  | Была реализована упрощённая версия команды `stat`. Пример вывода для пути `/dev/null`: | ||||||
|  | ```text | ||||||
|  | File: /dev/null | ||||||
|  | Size: 0 Blocks: 0       IO Block: 4096  character device | ||||||
|  | Device: [0000:0006]     Inode: 5        Links: 1 | ||||||
|  | Mode: 020666    Uid: 0  Gid: 0 | ||||||
|  | Access (atime): Tue Jun  9 20:25:43 2020 | ||||||
|  | Modify (mtime): Tue Jun  9 20:25:43 2020 | ||||||
|  | Change (ctime): Tue Jun  9 20:25:43 2020 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Для `/home`: | ||||||
|  | ```text | ||||||
|  | File: /home | ||||||
|  | Size: 10        Blocks: 0       IO Block: 4096  directory | ||||||
|  | Device: [0000:001d]     Inode: 264      Links: 1 | ||||||
|  | Mode: 040755    Uid: 0  Gid: 0 | ||||||
|  | Access (atime): Fri Apr  5 22:15:25 2019 | ||||||
|  | Modify (mtime): Mon Dec  4 18:26:29 2017 | ||||||
|  | Change (ctime): Fri Sep  7 03:19:26 2018 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Задание 5 | ||||||
|  | 
 | ||||||
|  | Была реализована упрощённая версия команды `ls`. | ||||||
|  | 
 | ||||||
|  | Были реализованы следующие ключи: | ||||||
|  | 
 | ||||||
|  | - `-l` для подробного вывода (long-listing)  | ||||||
|  | - `--` для явного завершения приёма параметров (на случай, если файл начинается с дефиса) | ||||||
|  | 
 | ||||||
|  | Пример для параметров `-l -- /usr`: | ||||||
|  | ```text | ||||||
|  | drwxr-xr-x         1    root root          104  2020-Jun-09 03:13:52 +10        . | ||||||
|  | drwxr-xr-x         1    root root          254  2020-May-22 07:15:49 +10        .. | ||||||
|  | drwxr-xr-x         1    root root       127286  2020-Jun-09 03:13:51 +10        bin | ||||||
|  | drwxr-xr-x         1    root root        35922  2020-Jun-09 03:13:51 +10        include | ||||||
|  | drwxr-xr-x         1    root root       287352  2020-Jun-09 03:13:51 +10        lib | ||||||
|  | drwxr-xr-x         1    root root        45012  2020-Jun-08 12:29:17 +10        lib32 | ||||||
|  | drwxr-xr-x         1    root root           72  2017-Oct-26 22:22:02 +10        local | ||||||
|  | drwxr-xr-x         1    root root         7954  2020-Jun-08 13:31:41 +10        share | ||||||
|  | drwxr-xr-x         1    root root           70  2020-May-26 13:59:54 +10        src | ||||||
|  | drwxr-xr-x         1    root root            6  2019-Dec-17 13:10:37 +10        games | ||||||
|  | drwxr-xr-x         1    root root           40  2020-Apr-06 17:00:36 +10        libexec | ||||||
|  | lrwxrwxrwx         1    root root            3  2020-May-21 17:30:57 +10        lib64 | ||||||
|  | lrwxrwxrwx         1    root root            3  2020-May-21 17:30:57 +10        sbin | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Пример для параметров `/bin/sh`: | ||||||
|  | ```text | ||||||
|  | /bin/sh | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Пример для `-l /bin/sh`: | ||||||
|  | ```text | ||||||
|  | lrwxrwxrwx         1    root root            4  2020-May-27 05:32:57 +10        /bin/sh | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Задание 6 | ||||||
|  | 
 | ||||||
|  | Была реализована утилита, напоминающая упрощённую версию `find`. | ||||||
|  | 
 | ||||||
|  | Были реализованы следующие ключи: | ||||||
|  | 
 | ||||||
|  | - `-d <number>` для ограничения глубины рекурсивного прохода по директориям  | ||||||
|  |     (`<number>` -- неотрицательное) | ||||||
|  | - `-L` для перехода по символическим ссылкам (по умолчанию директории-симлинки игнорируются) | ||||||
|  | - `--` для явного завершения приёма параметров (на случай, если файл начинается с дефиса) | ||||||
|  | 
 | ||||||
|  | Примеры: | ||||||
|  | ```text | ||||||
|  | $ ./lab5_task6.c_run -L -d 2 ../lab5                                                                       ✔  | ||||||
|  | ../lab5 | ||||||
|  | ../lab5/CMakeFiles | ||||||
|  | ../lab5/CMakeFiles/lab5_task1.c_run.dir | ||||||
|  | ../lab5/CMakeFiles/lab5.dir | ||||||
|  | ../lab5/CMakeFiles/CMakeDirectoryInformation.cmake | ||||||
|  | ../lab5/CMakeFiles/lab5_benchmark.h_run.dir | ||||||
|  | ../lab5/CMakeFiles/lab5_task2.c_run.dir | ||||||
|  | ../lab5/CMakeFiles/lab5_mytail.c_run.dir | ||||||
|  | ../lab5/CMakeFiles/lab5_mystat.c_run.dir | ||||||
|  | ../lab5/CMakeFiles/lab5_myls.c_run.dir | ||||||
|  | ../lab5/CMakeFiles/lab5_task6.c_run.dir | ||||||
|  | ../lab5/CMakeFiles/progress.marks | ||||||
|  | ../lab5/cmake_install.cmake | ||||||
|  | ../lab5/task2_posix.txt | ||||||
|  | ../lab5/task2_stdio.txt | ||||||
|  | ../lab5/lab5_mytail.c_run | ||||||
|  | ../lab5/lab5_myls.c_run | ||||||
|  | ../lab5/Makefile | ||||||
|  | ../lab5/lab5.cbp | ||||||
|  | ../lab5/lab5_task1.c_run | ||||||
|  | ../lab5/task1.txt | ||||||
|  | ../lab5/lab5_task2.c_run | ||||||
|  | ../lab5/lab5_mystat.c_run | ||||||
|  | ../lab5/lab5_task6.c_run | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ```text | ||||||
|  | $ ./lab5_task6.c_run -d 0 | ||||||
|  | . | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ```text | ||||||
|  | $ ./lab5_task6.c_run -L -d 1 | ||||||
|  | . | ||||||
|  | ./CMakeFiles | ||||||
|  | ./cmake_install.cmake | ||||||
|  | ./task2_posix.txt | ||||||
|  | ./task2_stdio.txt | ||||||
|  | ./lab5_mytail.c_run | ||||||
|  | ./lab5_myls.c_run | ||||||
|  | ./Makefile | ||||||
|  | ./lab5.cbp | ||||||
|  | ./lab5_task1.c_run | ||||||
|  | ./task1.txt | ||||||
|  | ./lab5_task2.c_run | ||||||
|  | ./lab5_mystat.c_run | ||||||
|  | ./lab5_task6.c_run | ||||||
|  | ``` | ||||||
		Loading…
	
		Reference in New Issue