Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² срСдС Linux. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 143

Автор Майкл ДТонсон

622:  char * msg;

623:

624:  while ((childpid = waitpid(-1, &status,

625:   WNOHANG | WUNTRACED)) > 0) {

626:   for (job = jobList->head; job; job = job->next) {

627:    progNum = 0;

628:    while(progNum < job->numProgs &&

629:     job->progs[progNum].pid != childpid)

630:     progNum++;

631:    if (progNum < job->numProgs) break;

632:   }

633:

634:   if (WIFEXITED(status) || WIFSIGNALED(status)) {

635:    /* Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Ρƒ */

636:    job->runningProgs--;

637:    job->progs[progNum].pid = 0;

638:

639:    if (!WIFSIGNALED(status))

640:     msg = "Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ";

641:    else

642:     msg = strsignal(WTERMSIG(status));

643:

644:    if (!job->runningProgs) {

645:     printf(JOB_STATUS_FORMAT, job->jobId,

646:      msg, job->text);

647:     removeJob(jobList, job);

648:    }

649:   } else {

650:    /* Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ процСсса остановлСно */

651:    job->stoppedProgs++;

652:    job->progs[progNum].isStopped = 1;

653:

654:    if (job->stoppedProgs == job->numProgs) {

655:     printf(JOB_STATUS_FORMAT, job->jobId, "ΠžΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΎ",

656:      job->text);

657:    }

658:   }

659:  }

660:

661:  if (childpid == -1 && errno != ECHILD)

662:   perror("waitpid");

663: }

664:

665: int main(int argc, const char ** argv) {

666:  char command[MAX_COMMAND_LEN + 1];

667:  char * nextCommand = NULL;

668:  struct jobSet jobList = { NULL, NULL };

669:  struct job newJob;

670:  FILE * input = stdin;

671:  int i;

672:  int status;

673:  int inBg;

674:

675:  if (argc > 2) {

676:   fprintf(stderr, "Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚; использованиС: ladsh1 "

677:    "<ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹>\n");

678:   exit(1);

679:  } else if (argc == 2) {

680:   input = fopen(argv[1], "r");

681:   if (!input) {

682:    perror("fopen");

683:    exit(1);

684:   }

685:  }

686:

687:  /* Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ внимания Π½Π° этот сигнал; это просто ΠΏΠΎΠΌΠ΅Ρ…Π°,

688:     Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния для ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ */

689:  signal(SIGTTOU, SIG_IGN);

690:

691:  while (1) {

692:   if (!jobList.fg) {

693:    /* Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌ ΠΏΠ»Π°Π½Π΅ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ задания */

694:

695:    /* провСряСм, Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ задания */

696:    checkJobs(&jobList);

697:

698:    if (!nextCommand) {

699:     if (getCommand(input, command)) break;

700:     nextCommand = command;

701:    }

702:

703:    if (!parseCommand(&nextCommand, &newJob, &inBg) &&

704:     newJob.numProgs) {

705:     runCommand(newJob, &jobList, inBg);

706:    }

707:   } else {

708:    /* Π·Π°Π΄Π°Π½ΠΈΠ΅ выполняСтся Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌ ΠΏΠ»Π°Π½Π΅; ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ */

709:    i = 0;

710:    while (!jobList:fg->progs[i].pid ||

711:     jobList.fg->progs[i].isStopped) i++;

712:

713:    waitpid(jobList.fg->progs[i].pid, &status, WUNTRACED);

714:

715:    if (WIFSIGNALED(status) &&

716:     (WTERMSIG(status) != SIGINT)) {

717:     printf("%s\n", strsignal(status));

718:    }

719:

720:    if (WIFEXITED(status) || WIFSIGNALED(status)) {

721:     /* Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Ρƒ */

722:     jobList.fg->runningProgs--;

723:     jobList.fg->progs[i].pid = 0;

724:

725:     if (!jobList.fg->runningProgs) {

726:      /* Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Ρƒ */

727:

728:      removeJob(&jobList, jobList.fg);

729:      jobList.fg = NULL;

730:

731:      /* ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ */

732:      if (tcsetpgrp(0, getpid()))

733:       perror("tcsetpgrp");

734:     }

735:    } else {

736:     /* Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ процСсса Π±Ρ‹Π»ΠΎ остановлСно */

737:     jobList.fg->stoppedProgs++;

738:     jobList.fg->progs[i].isStopped = 1;

739:

740:     if (jobList.fg->stoppedProgs ==

741:      jobList.fg->runningProgs) {

742:      printf("\n" JOB_STATUS_FORMAT,

743:       jobList.fg->jobId,

744:        "ΠžΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΎ", jobList.fg->text);

745:        jobList.fg = NULL;

746:     }

747:    }

748:

749:    if (!jobList.fg) {

750:     /* ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ */

751:     if (tcsetpgrp(0, getpid()))

752:      perror("tcsetpgrp");

753:    }

754:   }

755:  }

756:

757:  return 0;

758: }

Глоссарий

advisory locking β€” Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ примСняСтся ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: всС процСссы, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ явно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

anonymous mapping β€” Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ памяти, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π° связано с inode Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ использованиСм Π²Π½ΡƒΡ‚Ρ€ΠΈ процСсса.

ar. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° архивирования, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для создания Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

basic regular expression (BRE) β€” Π±Π°Π·ΠΎΠ²ΠΎΠ΅ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΈΠΏ выраТСния для сопоставлСния строк, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ grep.

big-endian β€” ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ порядок Π±Π°ΠΉΡ‚ΠΎΠ². ΠœΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, сохранСнноС с Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΌ Π±Π°ΠΉΡ‚ΠΎΠΌ Π² ΠΌΠ»Π°Π΄ΡˆΠΈΡ… адрСсах памяти, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹ Π² порядкС значимости.

blocked signals β€” Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сигналы. Π‘ΠΈΠ³Π½Π°Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ процСсс Π½Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ сигналы Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠΊΠ° процСсс выполняСт Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Когда сигнал посылаСтся процСссу, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌΡƒ этот сигнал, послСдний остаСтся ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½.

break β€” Ρ€Π°Π·Ρ€Ρ‹Π². Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Π±ΠΈΡ‚ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ интСрфСйсС.

buffer overflow β€” ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π°. Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° ΠΊΠΎΠ½Ρ†ΠΎΠΌ области памяти, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ эти Π΄Π°Π½Π½Ρ‹Π΅, которая ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сбою Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ появлСнию уязвимостСй бСзопасности.

buffer underrun β€” Π½Π΅Π΄ΠΎΠ³Ρ€ΡƒΠ·ΠΊΠ° Π±ΡƒΡ„Π΅Ρ€Π°. Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ области памяти, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ эти Π΄Π°Π½Π½Ρ‹Π΅.

canonical hostname β€” каноничСскоС имя хоста. Имя хоста, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ отобраТаСтся IP-адрСс. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ мноТСство ΠΈΠΌΠ΅Π½ хостов ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° СдинствСнный IP- адрСс, этот адрСс отобраТаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎ, каноничСскоС, имя хоста.

capability β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. ДСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

catching a signal β€” ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ сигнала. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая запускаСтся, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ сигнал послан процСссу.

Command Sequence Introduction (CSI) β€” Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘ΠΈΠΌΠ²ΠΎΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

concurrent server β€” ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр. Π‘Π΅Ρ€Π²Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ мноТСствСнныС запросы (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… хостов) ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

connection-oriented protocol β€” ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» с установкой соСдинСния. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ, устанавливая соСдинСниС, поддСрТивая ΠΏΠΎ Π½Π΅ΠΌΡƒ взаимодСйствиС ΠΈ Π·Π°Ρ‚Π΅ΠΌ закрывая соСдинСниС.

connectionless protocol β€” ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π±Π΅Π· установки соСдинСния. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π΄Π²ΡƒΠΌ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ создания соСдинСния ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

control character β€” ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ символ. Π‘ΠΈΠΌΠ²ΠΎΠ» Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½ΠΎ Π½Π΅ измСняСт Ρ€Π΅ΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

copy-on-write β€” ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ записи. ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ° страницы ΠΊΠ°ΠΊ доступной Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, которая Π²ΠΎ мноТСствС процСссов рассматриваСтся ΠΊΠ°ΠΊ приватная ΠΈ доступная для записи, ΠΈ Π²Ρ‹Π΄Π°Ρ‡Π° записываСмой Π΅Π΅ вСрсии, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ процСсс пытаСтся ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ запись Π² Π½Π΅Π΅.

dangling link β€” висячая ссылка. БимволичСская ссылка, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π½Π° Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ».

deadlocks β€” Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π‘ΠΈΡ‚ΡƒΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π΄Π²Π° потрСбитСля рСсурса (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ процСссы) ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ рСсурса, ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΌ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ останову продвиТСния всСй Ρ€Π°Π±ΠΎΡ‚Ρ‹.

device files β€” Ρ„Π°ΠΉΠ»Ρ‹ устройств. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ физичСскиС ΠΈΠ»ΠΈ логичСскиС устройства Π² систСмС. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ устройств ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ² позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Π½ΠΈΠΌ с использованиСм ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

directories β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат списки ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ большого числа Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΉ.

dotted-decimal notation β€” дСсятичноС прСдставлСниС с раздСлитСлями-Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ. Бтандартная Ρ„ΠΎΡ€ΠΌΠ° записи IPv4-адрСсов Π² Π²ΠΈΠ΄Π΅ дСсятичных чисСл для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° адрСса, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ.