diff --git a/semester-4/ОС/lb-7/README.md b/semester-4/ОС/lb-7/README.md index db06797..1f9f5e6 100644 --- a/semester-4/ОС/lb-7/README.md +++ b/semester-4/ОС/lb-7/README.md @@ -1,7 +1,7 @@ > [!NOTE] > Викладач: Мельникова Р. В. > -> Оцінка: in progress +> Оцінка: 92 > [!TIP] > Виконано для Linux в команді. diff --git a/semester-4/ОС/lb-7/src/editor/analizer.c b/semester-4/ОС/lb-7/src/editor/analizer.c index 35aa6d8..f5de30a 100644 --- a/semester-4/ОС/lb-7/src/editor/analizer.c +++ b/semester-4/ОС/lb-7/src/editor/analizer.c @@ -123,7 +123,7 @@ int main(int argc, char *argv[]) { fprintf(stderr, "Error: please provide time in UNIX timestamp format.\n"); return 1; } - time_t norm_time = mktime(&tm); + time_t mtime = mktime(&tm); char *paths[] = {CWD, NULL}; FTS *fts = fts_open(paths, FTS_NOCHDIR, NULL); @@ -134,10 +134,11 @@ int main(int argc, char *argv[]) { char *buf = (char *)malloc(1024 * sizeof(char)); - for (FTSENT *ent = fts_read(fts); ent != NULL; ent = fts_read(fts)) { + FTSENT *ent; + while ((ent = fts_read(fts)) != NULL) { switch (ent->fts_info) { case FTS_F: - if (ent->fts_statp->st_mtime > norm_time) { + if (ent->fts_statp->st_mtime > mtime) { printf(RED); printf("--------------------------------\n"); @@ -167,6 +168,12 @@ int main(int argc, char *argv[]) { Encoding enc = get_encoding(buf, bytes_read); printf("Lines length:"); + + if (enc != ENC_UTF8) + buf = to_utf8(buf, bytes_read, enc); + + enc = ENC_UTF8; + size_t lines = 0; size_t line_len = 0; for (size_t i = (enc == 2 || enc == 1) ? 2 : 0; i < bytes_read; i++) { @@ -204,9 +211,6 @@ int main(int argc, char *argv[]) { } printf("\nTotal lines: %zu\n", lines); - if (enc != ENC_UTF8) - buf = to_utf8(buf, bytes_read, enc); - printf(NORMAL); printf("%s\n", buf); diff --git a/semester-4/ОС/lb-7/src/matrix-calc/main.c b/semester-4/ОС/lb-7/src/matrix-calc/main.c index e26e18a..bec6525 100644 --- a/semester-4/ОС/lb-7/src/matrix-calc/main.c +++ b/semester-4/ОС/lb-7/src/matrix-calc/main.c @@ -3,7 +3,7 @@ #include #include -#define MATRIX_SIZE 512 +#define MATRIX_SIZE 12 typedef struct { double **a; @@ -134,7 +134,7 @@ int main() { double sequential_time = measure_time_seq(mul_seq, a, b, r_seq, MATRIX_SIZE); printf("time: %f secinds\n", sequential_time); - int num_threads = 32; + int num_threads = 8; printf("\nperforming parrallel multiplication (%d threads)...\n", num_threads); double parallel_time = diff --git a/semester-4/ОС/lb-7/src/threads/main.c b/semester-4/ОС/lb-7/src/threads/main.c index 41c93d7..5b323c0 100644 --- a/semester-4/ОС/lb-7/src/threads/main.c +++ b/semester-4/ОС/lb-7/src/threads/main.c @@ -4,12 +4,15 @@ #define NUM_THREADS 10 +volatile size_t count = 0; + void *thread_function(void *thread_id) { long tid = (long)thread_id; printf("Begin\t%ld\n", tid); for (int i = 0; i < 100000; ++i) ; printf("End\t%ld\n", tid); + count++; pthread_exit(NULL); } @@ -23,7 +26,7 @@ int main() { void *status; pthread_join(threads[0], &status); - printf("Main thread completed execution\n"); + printf("Main thread completed execution\nCount: %zu\n", count); return 0; } diff --git a/semester-4/ОС/lb-7/Лр_7_Ситник_Малишкін_ПЗПІ_23_2.pdf b/semester-4/ОС/lb-7/Лр_7_Ситник_Малишкін_ПЗПІ_23_2.pdf index a3b6023..180e8d8 100644 Binary files a/semester-4/ОС/lb-7/Лр_7_Ситник_Малишкін_ПЗПІ_23_2.pdf and b/semester-4/ОС/lb-7/Лр_7_Ситник_Малишкін_ПЗПІ_23_2.pdf differ diff --git a/semester-4/ОС/lb-7/Лр_7_Ситник_Малишкін_ПЗПІ_23_2.typ b/semester-4/ОС/lb-7/Лр_7_Ситник_Малишкін_ПЗПІ_23_2.typ index 0fd1a80..c556c55 100644 --- a/semester-4/ОС/lb-7/Лр_7_Ситник_Малишкін_ПЗПІ_23_2.typ +++ b/semester-4/ОС/lb-7/Лр_7_Ситник_Малишкін_ПЗПІ_23_2.typ @@ -17,8 +17,8 @@ Завдання полягає у розробці трьох програм: + програма 1 запускає текстовий редактор у заданій папці; + програма 2 аналізує файли у заданій директорії, створені після вказаного часу, -визначаючи для них розмір, кількість рядків та довжину кожного рядка, з підтримкою -ASCII та UNICODE кодувань; + визначаючи для них розмір, кількість рядків та довжину кожного рядка, з підтримкою + ASCII та UNICODE кодувань; + програма 3 запускає спочатку програму 1, а потім програму 2, передаючи час запуску першої програми як параметр для другої.