Units
Translation components API.
See the Weblate's Web API documentation for detailed description of the API.
GET /api/translations/freebsd-doc/boooks_design-44bsd/en/units/?format=api&page=4
https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/units/?format=api&page=5", "previous": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/units/?format=api&page=3", "results": [ { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The system defines a set of <emphasis>signals</emphasis> that may be delivered to a process. Signals in 4.4BSD are modeled after hardware interrupts. A process may specify a user-level subroutine to be a <emphasis>handler</emphasis> to which a signal should be delivered. When a signal is generated, it is blocked from further occurrence while it is being <emphasis>caught</emphasis> by the handler. Catching a signal involves saving the current process context and building a new one in which to run the handler. The signal is then delivered to the handler, which can either abort the process or return to the executing process (perhaps after setting a global variable). If the handler returns, the signal is unblocked and can be generated (and caught) again." ], "previous_source": "", "target": [ "The system defines a set of <emphasis>signals</emphasis> that may be delivered to a process. Signals in 4.4BSD are modeled after hardware interrupts. A process may specify a user-level subroutine to be a <emphasis>handler</emphasis> to which a signal should be delivered. When a signal is generated, it is blocked from further occurrence while it is being <emphasis>caught</emphasis> by the handler. Catching a signal involves saving the current process context and building a new one in which to run the handler. The signal is then delivered to the handler, which can either abort the process or return to the executing process (perhaps after setting a global variable). If the handler returns, the signal is unblocked and can be generated (and caught) again." ], "id_hash": -5920543852016939532, "content_hash": -5920543852016939532, "location": "book.translate.xml:761", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 151, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 120, "source_unit": "https://translate-dev.freebsd.org/api/units/104997/?format=api", "priority": 100, "id": 104997, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=2dd600bc27684df4", "url": "https://translate-dev.freebsd.org/api/units/104997/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.045471Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Alternatively, a process may specify that a signal is to be <emphasis>ignored</emphasis>, or that a default action, as determined by the kernel, is to be taken. The default action of certain signals is to terminate the process. This termination may be accompanied by creation of a <emphasis>core file</emphasis> that contains the current memory image of the process for use in postmortem debugging." ], "previous_source": "", "target": [ "Alternatively, a process may specify that a signal is to be <emphasis>ignored</emphasis>, or that a default action, as determined by the kernel, is to be taken. The default action of certain signals is to terminate the process. This termination may be accompanied by creation of a <emphasis>core file</emphasis> that contains the current memory image of the process for use in postmortem debugging." ], "id_hash": 281099976653964804, "content_hash": 281099976653964804, "location": "book.translate.xml:780", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 152, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 62, "source_unit": "https://translate-dev.freebsd.org/api/units/104998/?format=api", "priority": 100, "id": 104998, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=83e6aaf07ed48604", "url": "https://translate-dev.freebsd.org/api/units/104998/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.062485Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Some signals cannot be caught or ignored. These signals include <emphasis>SIGKILL</emphasis>, which kills runaway processes, and the job-control signal <emphasis>SIGSTOP</emphasis>." ], "previous_source": "", "target": [ "Some signals cannot be caught or ignored. These signals include <emphasis>SIGKILL</emphasis>, which kills runaway processes, and the job-control signal <emphasis>SIGSTOP</emphasis>." ], "id_hash": 4587800578520321518, "content_hash": 4587800578520321518, "location": "book.translate.xml:789", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 153, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 20, "source_unit": "https://translate-dev.freebsd.org/api/units/104999/?format=api", "priority": 100, "id": 104999, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=bfab2451a7090dee", "url": "https://translate-dev.freebsd.org/api/units/104999/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.076028Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "A process may choose to have signals delivered on a special stack so that sophisticated software stack manipulations are possible. For example, a language supporting coroutines needs to provide a stack for each coroutine. The language run-time system can allocate these stacks by dividing up the single stack provided by 4.4BSD. If the kernel does not support a separate signal stack, the space allocated for each coroutine must be expanded by the amount of space required to catch a signal." ], "previous_source": "", "target": [ "A process may choose to have signals delivered on a special stack so that sophisticated software stack manipulations are possible. For example, a language supporting coroutines needs to provide a stack for each coroutine. The language run-time system can allocate these stacks by dividing up the single stack provided by 4.4BSD. If the kernel does not support a separate signal stack, the space allocated for each coroutine must be expanded by the amount of space required to catch a signal." ], "id_hash": -8577835401393644031, "content_hash": -8577835401393644031, "location": "book.translate.xml:797", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 154, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 80, "source_unit": "https://translate-dev.freebsd.org/api/units/105000/?format=api", "priority": 100, "id": 105000, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=08f5682656295e01", "url": "https://translate-dev.freebsd.org/api/units/105000/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.093120Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "All signals have the same <emphasis>priority</emphasis>. If multiple signals are pending simultaneously, the order in which signals are delivered to a process is implementation specific. Signal handlers execute with the signal that caused their invocation to be blocked, but other signals may yet occur. Mechanisms are provided so that processes can protect critical sections of code against the occurrence of specified signals." ], "previous_source": "", "target": [ "All signals have the same <emphasis>priority</emphasis>. If multiple signals are pending simultaneously, the order in which signals are delivered to a process is implementation specific. Signal handlers execute with the signal that caused their invocation to be blocked, but other signals may yet occur. Mechanisms are provided so that processes can protect critical sections of code against the occurrence of specified signals." ], "id_hash": -4490976021440988472, "content_hash": -4490976021440988472, "location": "book.translate.xml:808", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 155, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 62, "source_unit": "https://translate-dev.freebsd.org/api/units/105001/?format=api", "priority": 100, "id": 105001, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=41acd91a4b367ac8", "url": "https://translate-dev.freebsd.org/api/units/105001/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.111872Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The detailed design and implementation of signals is described in Section 4.7." ], "previous_source": "", "target": [ "The detailed design and implementation of signals is described in Section 4.7." ], "id_hash": 7711061836758774770, "content_hash": 7711061836758774770, "location": "book.translate.xml:816", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 156, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 12, "source_unit": "https://translate-dev.freebsd.org/api/units/105002/?format=api", "priority": 100, "id": 105002, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=eb0331e2b513f3f2", "url": "https://translate-dev.freebsd.org/api/units/105002/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.126594Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Process Groups and Sessions" ], "previous_source": "", "target": [ "Process Groups and Sessions" ], "id_hash": 2308526301125704726, "content_hash": 2308526301125704726, "location": "book.translate.xml:821", "context": "", "note": "(itstool) path: sect2/title", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 157, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 4, "source_unit": "https://translate-dev.freebsd.org/api/units/105003/?format=api", "priority": 100, "id": 105003, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=a0098870953e7c16", "url": "https://translate-dev.freebsd.org/api/units/105003/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.147253Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Processes are organized into <emphasis>process groups</emphasis>. Process groups are used to control access to terminals and to provide a means of distributing signals to collections of related processes. A process inherits its process group from its parent process. Mechanisms are provided by the kernel to allow a process to alter its process group or the process group of its descendents. Creating a new process group is easy; the value of a new process group is ordinarily the process identifier of the creating process." ], "previous_source": "", "target": [ "Processes are organized into <emphasis>process groups</emphasis>. Process groups are used to control access to terminals and to provide a means of distributing signals to collections of related processes. A process inherits its process group from its parent process. Mechanisms are provided by the kernel to allow a process to alter its process group or the process group of its descendents. Creating a new process group is easy; the value of a new process group is ordinarily the process identifier of the creating process." ], "id_hash": 6778163262426771024, "content_hash": 6778163262426771024, "location": "book.translate.xml:823", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 158, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 83, "source_unit": "https://translate-dev.freebsd.org/api/units/105004/?format=api", "priority": 100, "id": 105004, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=de10df932e8cee50", "url": "https://translate-dev.freebsd.org/api/units/105004/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.171006Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The group of processes in a process group is sometimes referred to as a <emphasis>job</emphasis> and is manipulated by high-level system software, such as the shell. A common kind of job created by a shell is a <emphasis>pipeline</emphasis> of several processes connected by pipes, such that the output of the first process is the input of the second, the output of the second is the input of the third, and so forth. The shell creates such a job by forking a process for each stage of the pipeline, then putting all those processes into a separate process group." ], "previous_source": "", "target": [ "The group of processes in a process group is sometimes referred to as a <emphasis>job</emphasis> and is manipulated by high-level system software, such as the shell. A common kind of job created by a shell is a <emphasis>pipeline</emphasis> of several processes connected by pipes, such that the output of the first process is the input of the second, the output of the second is the input of the third, and so forth. The shell creates such a job by forking a process for each stage of the pipeline, then putting all those processes into a separate process group." ], "id_hash": -8050179747542142411, "content_hash": -8050179747542142411, "location": "book.translate.xml:835", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 159, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 98, "source_unit": "https://translate-dev.freebsd.org/api/units/105005/?format=api", "priority": 100, "id": 105005, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=1048042bd9b4f235", "url": "https://translate-dev.freebsd.org/api/units/105005/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.189055Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "A user process can send a signal to each process in a process group, as well as to a single process. A process in a specific process group may receive software interrupts affecting the group, causing the group to suspend or resume execution, or to be interrupted or terminated." ], "previous_source": "", "target": [ "A user process can send a signal to each process in a process group, as well as to a single process. A process in a specific process group may receive software interrupts affecting the group, causing the group to suspend or resume execution, or to be interrupted or terminated." ], "id_hash": 8974610558363381714, "content_hash": 8974610558363381714, "location": "book.translate.xml:848", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 160, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 49, "source_unit": "https://translate-dev.freebsd.org/api/units/105006/?format=api", "priority": 100, "id": 105006, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=fc8c38c0d8b82fd2", "url": "https://translate-dev.freebsd.org/api/units/105006/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.203382Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "A terminal has a process-group identifier assigned to it. This identifier is normally set to the identifier of a process group associated with the terminal. A job-control shell may create a number of process groups associated with the same terminal; the terminal is the <emphasis>controlling terminal</emphasis> for each process in these groups. A process may read from a descriptor for its controlling terminal only if the terminal's process-group identifier matches that of the process. If the identifiers do not match, the process will be blocked if it attempts to read from the terminal. By changing the process-group identifier of the terminal, a shell can arbitrate a terminal among several different jobs. This arbitration is called <emphasis>job control</emphasis> and is described, with process groups, in Section 4.8." ], "previous_source": "", "target": [ "A terminal has a process-group identifier assigned to it. This identifier is normally set to the identifier of a process group associated with the terminal. A job-control shell may create a number of process groups associated with the same terminal; the terminal is the <emphasis>controlling terminal</emphasis> for each process in these groups. A process may read from a descriptor for its controlling terminal only if the terminal's process-group identifier matches that of the process. If the identifiers do not match, the process will be blocked if it attempts to read from the terminal. By changing the process-group identifier of the terminal, a shell can arbitrate a terminal among several different jobs. This arbitration is called <emphasis>job control</emphasis> and is described, with process groups, in Section 4.8." ], "id_hash": -2707929651269380516, "content_hash": -2707929651269380516, "location": "book.translate.xml:854", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 161, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 126, "source_unit": "https://translate-dev.freebsd.org/api/units/105007/?format=api", "priority": 100, "id": 105007, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=5a6b80545357565c", "url": "https://translate-dev.freebsd.org/api/units/105007/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.223284Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Just as a set of related processes can be collected into a process group, a set of process groups can be collected into a <emphasis>session</emphasis>. The main uses for sessions are to create an isolated environment for a daemon process and its children, and to collect together a user's login shell and the jobs that that shell spawns." ], "previous_source": "", "target": [ "Just as a set of related processes can be collected into a process group, a set of process groups can be collected into a <emphasis>session</emphasis>. The main uses for sessions are to create an isolated environment for a daemon process and its children, and to collect together a user's login shell and the jobs that that shell spawns." ], "id_hash": 6663889622362046490, "content_hash": 6663889622362046490, "location": "book.translate.xml:873", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 162, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 58, "source_unit": "https://translate-dev.freebsd.org/api/units/105008/?format=api", "priority": 100, "id": 105008, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=dc7ae44e034d401a", "url": "https://translate-dev.freebsd.org/api/units/105008/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.242953Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Memory Management" ], "previous_source": "", "target": [ "Memory Management" ], "id_hash": 2099002242228381739, "content_hash": 2099002242228381739, "location": "book.translate.xml:884", "context": "", "note": "(itstool) path: sect1/title", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 163, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 2, "source_unit": "https://translate-dev.freebsd.org/api/units/105009/?format=api", "priority": 100, "id": 105009, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=9d21276b16c5682b", "url": "https://translate-dev.freebsd.org/api/units/105009/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.260257Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Each process has its own private address space. The address space is initially divided into three logical segments: <emphasis>text</emphasis>, <emphasis>data</emphasis>, and <emphasis>stack</emphasis>. The text segment is read-only and contains the machine instructions of a program. The data and stack segments are both readable and writable. The data segment contains the initialized and uninitialized data portions of a program, whereas the stack segment holds the application's run-time stack. On most machines, the stack segment is extended automatically by the kernel as the process executes. A process can expand or contract its data segment by making a system call, whereas a process can change the size of its text segment only when the segment's contents are overlaid with data from the filesystem, or when debugging takes place. The initial contents of the segments of a child process are duplicates of the segments of a parent process." ], "previous_source": "", "target": [ "Each process has its own private address space. The address space is initially divided into three logical segments: <emphasis>text</emphasis>, <emphasis>data</emphasis>, and <emphasis>stack</emphasis>. The text segment is read-only and contains the machine instructions of a program. The data and stack segments are both readable and writable. The data segment contains the initialized and uninitialized data portions of a program, whereas the stack segment holds the application's run-time stack. On most machines, the stack segment is extended automatically by the kernel as the process executes. A process can expand or contract its data segment by making a system call, whereas a process can change the size of its text segment only when the segment's contents are overlaid with data from the filesystem, or when debugging takes place. The initial contents of the segments of a child process are duplicates of the segments of a parent process." ], "id_hash": 8645971490330735625, "content_hash": 8645971490330735625, "location": "book.translate.xml:886", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 164, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 144, "source_unit": "https://translate-dev.freebsd.org/api/units/105010/?format=api", "priority": 100, "id": 105010, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=f7fca9431b517409", "url": "https://translate-dev.freebsd.org/api/units/105010/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.283483Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The entire contents of a process address space do not need to be resident for a process to execute. If a process references a part of its address space that is not resident in main memory, the system <emphasis>pages</emphasis> the necessary information into memory. When system resources are scarce, the system uses a two-level approach to maintain available resources. If a modest amount of memory is available, the system will take memory resources away from processes if these resources have not been used recently. Should there be a severe resource shortage, the system will resort to <emphasis>swapping</emphasis> the entire context of a process to secondary storage. The <emphasis>demand paging</emphasis> and <emphasis>swapping</emphasis> done by the system are effectively transparent to processes. A process may, however, advise the system about expected future memory utilization as a performance aid." ], "previous_source": "", "target": [ "The entire contents of a process address space do not need to be resident for a process to execute. If a process references a part of its address space that is not resident in main memory, the system <emphasis>pages</emphasis> the necessary information into memory. When system resources are scarce, the system uses a two-level approach to maintain available resources. If a modest amount of memory is available, the system will take memory resources away from processes if these resources have not been used recently. Should there be a severe resource shortage, the system will resort to <emphasis>swapping</emphasis> the entire context of a process to secondary storage. The <emphasis>demand paging</emphasis> and <emphasis>swapping</emphasis> done by the system are effectively transparent to processes. A process may, however, advise the system about expected future memory utilization as a performance aid." ], "id_hash": -3719784895136210557, "content_hash": -3719784895136210557, "location": "book.translate.xml:907", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 165, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 136, "source_unit": "https://translate-dev.freebsd.org/api/units/105011/?format=api", "priority": 100, "id": 105011, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=4c60ab589c8ae183", "url": "https://translate-dev.freebsd.org/api/units/105011/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.305239Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "BSD Memory-Management Design Decisions" ], "previous_source": "", "target": [ "BSD Memory-Management Design Decisions" ], "id_hash": 4126043840189051448, "content_hash": 4126043840189051448, "location": "book.translate.xml:930", "context": "", "note": "(itstool) path: sect2/title", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 166, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 4, "source_unit": "https://translate-dev.freebsd.org/api/units/105012/?format=api", "priority": 100, "id": 105012, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=b942a7030e283238", "url": "https://translate-dev.freebsd.org/api/units/105012/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.325194Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The support of large sparse address spaces, mapped files, and shared memory was a requirement for 4.2BSD. An interface was specified, called <emphasis>mmap</emphasis>, that allowed unrelated processes to request a shared mapping of a file into their address spaces. If multiple processes mapped the same file into their address spaces, changes to the file's portion of an address space by one process would be reflected in the area mapped by the other processes, as well as in the file itself. Ultimately, 4.2BSD was shipped without the <emphasis>mmap</emphasis> interface, because of pressure to make other features, such as networking, available." ], "previous_source": "", "target": [ "The support of large sparse address spaces, mapped files, and shared memory was a requirement for 4.2BSD. An interface was specified, called <emphasis>mmap</emphasis>, that allowed unrelated processes to request a shared mapping of a file into their address spaces. If multiple processes mapped the same file into their address spaces, changes to the file's portion of an address space by one process would be reflected in the area mapped by the other processes, as well as in the file itself. Ultimately, 4.2BSD was shipped without the <emphasis>mmap</emphasis> interface, because of pressure to make other features, such as networking, available." ], "id_hash": -3435962928514170696, "content_hash": -3435962928514170696, "location": "book.translate.xml:932", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 167, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 99, "source_unit": "https://translate-dev.freebsd.org/api/units/105013/?format=api", "priority": 100, "id": 105013, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=505101ebc88080b8", "url": "https://translate-dev.freebsd.org/api/units/105013/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.336032Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Further development of the <emphasis>mmap</emphasis> interface continued during the work on 4.3BSD. Over 40 companies and research groups participated in the discussions leading to the revised architecture that was described in the Berkeley Software Architecture Manual <xref linkend=\"biblio-mckusick-1\"/>. Several of the companies have implemented the revised interface <xref linkend=\"biblio-gingell\"/>." ], "previous_source": "", "target": [ "Further development of the <emphasis>mmap</emphasis> interface continued during the work on 4.3BSD. Over 40 companies and research groups participated in the discussions leading to the revised architecture that was described in the Berkeley Software Architecture Manual <xref linkend=\"biblio-mckusick-1\"/>. Several of the companies have implemented the revised interface <xref linkend=\"biblio-gingell\"/>." ], "id_hash": -3502033690224437583, "content_hash": -3502033690224437583, "location": "book.translate.xml:947", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 168, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 49, "source_unit": "https://translate-dev.freebsd.org/api/units/105014/?format=api", "priority": 100, "id": 105014, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=4f6646e9ceb8d6b1", "url": "https://translate-dev.freebsd.org/api/units/105014/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.357495Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Once again, time pressure prevented 4.3BSD from providing an implementation of the interface. Although the latter could have been built into the existing 4.3BSD virtual-memory system, the developers decided not to put it in because that implementation was nearly 10 years old. Furthermore, the original virtual-memory design was based on the assumption that computer memories were small and expensive, whereas disks were locally connected, fast, large, and inexpensive. Thus, the virtual-memory system was designed to be frugal with its use of memory at the expense of generating extra disk traffic. In addition, the 4.3BSD implementation was riddled with VAX memory-management hardware dependencies that impeded its portability to other computer architectures. Finally, the virtual-memory system was not designed to support the tightly coupled multiprocessors that are becoming increasingly common and important today." ], "previous_source": "", "target": [ "Once again, time pressure prevented 4.3BSD from providing an implementation of the interface. Although the latter could have been built into the existing 4.3BSD virtual-memory system, the developers decided not to put it in because that implementation was nearly 10 years old. Furthermore, the original virtual-memory design was based on the assumption that computer memories were small and expensive, whereas disks were locally connected, fast, large, and inexpensive. Thus, the virtual-memory system was designed to be frugal with its use of memory at the expense of generating extra disk traffic. In addition, the 4.3BSD implementation was riddled with VAX memory-management hardware dependencies that impeded its portability to other computer architectures. Finally, the virtual-memory system was not designed to support the tightly coupled multiprocessors that are becoming increasingly common and important today." ], "id_hash": 4046228440876158589, "content_hash": 4046228440876158589, "location": "book.translate.xml:957", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 169, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 131, "source_unit": "https://translate-dev.freebsd.org/api/units/105015/?format=api", "priority": 100, "id": 105015, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=b827175442818e7d", "url": "https://translate-dev.freebsd.org/api/units/105015/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.377521Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Attempts to improve the old implementation incrementally seemed doomed to failure. A completely new design, on the other hand, could take advantage of large memories, conserve disk transfers, and have the potential to run on multiprocessors. Consequently, the virtual-memory system was completely replaced in 4.4BSD. The 4.4BSD virtual-memory system is based on the Mach 2.0 VM system <xref linkend=\"biblio-tevanian\"/>. with updates from Mach 2.5 and Mach 3.0. It features efficient support for sharing, a clean separation of machine-independent and machine-dependent features, as well as (currently unused) multiprocessor support. Processes can map files anywhere in their address space. They can share parts of their address space by doing a shared mapping of the same file. Changes made by one process are visible in the address space of the other process, and also are written back to the file itself. Processes can also request private mappings of a file, which prevents any changes that they make from being visible to other processes mapping the file or being written back to the file itself." ], "previous_source": "", "target": [ "Attempts to improve the old implementation incrementally seemed doomed to failure. A completely new design, on the other hand, could take advantage of large memories, conserve disk transfers, and have the potential to run on multiprocessors. Consequently, the virtual-memory system was completely replaced in 4.4BSD. The 4.4BSD virtual-memory system is based on the Mach 2.0 VM system <xref linkend=\"biblio-tevanian\"/>. with updates from Mach 2.5 and Mach 3.0. It features efficient support for sharing, a clean separation of machine-independent and machine-dependent features, as well as (currently unused) multiprocessor support. Processes can map files anywhere in their address space. They can share parts of their address space by doing a shared mapping of the same file. Changes made by one process are visible in the address space of the other process, and also are written back to the file itself. Processes can also request private mappings of a file, which prevents any changes that they make from being visible to other processes mapping the file or being written back to the file itself." ], "id_hash": 6352878556772309966, "content_hash": 6352878556772309966, "location": "book.translate.xml:979", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 170, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 171, "source_unit": "https://translate-dev.freebsd.org/api/units/105016/?format=api", "priority": 100, "id": 105016, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=d829f5636d9c1bce", "url": "https://translate-dev.freebsd.org/api/units/105016/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.398304Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Another issue with the virtual-memory system is the way that information is passed into the kernel when a system call is made. 4.4BSD always copies data from the process address space into a buffer in the kernel. For read or write operations that are transferring large quantities of data, doing the copy can be time consuming. An alternative to doing the copying is to remap the process memory into the kernel. The 4.4BSD kernel always copies the data for several reasons:" ], "previous_source": "", "target": [ "Another issue with the virtual-memory system is the way that information is passed into the kernel when a system call is made. 4.4BSD always copies data from the process address space into a buffer in the kernel. For read or write operations that are transferring large quantities of data, doing the copy can be time consuming. An alternative to doing the copying is to remap the process memory into the kernel. The 4.4BSD kernel always copies the data for several reasons:" ], "id_hash": 2204772824729782358, "content_hash": 2204772824729782358, "location": "book.translate.xml:1004", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 171, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 81, "source_unit": "https://translate-dev.freebsd.org/api/units/105017/?format=api", "priority": 100, "id": 105017, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=9e98ed33e4740856", "url": "https://translate-dev.freebsd.org/api/units/105017/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.414798Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Often, the user data are not page aligned and are not a multiple of the hardware page length." ], "previous_source": "", "target": [ "Often, the user data are not page aligned and are not a multiple of the hardware page length." ], "id_hash": -215577539149090868, "content_hash": -215577539149090868, "location": "book.translate.xml:1017", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 172, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 18, "source_unit": "https://translate-dev.freebsd.org/api/units/105018/?format=api", "priority": 100, "id": 105018, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=7d021d5ecd772fcc", "url": "https://translate-dev.freebsd.org/api/units/105018/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.433454Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "If the page is taken away from the process, it will no longer be able to reference that page. Some programs depend on the data remaining in the buffer even after those data have been written." ], "previous_source": "", "target": [ "If the page is taken away from the process, it will no longer be able to reference that page. Some programs depend on the data remaining in the buffer even after those data have been written." ], "id_hash": -5118490590502434074, "content_hash": -5118490590502434074, "location": "book.translate.xml:1022", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 173, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 36, "source_unit": "https://translate-dev.freebsd.org/api/units/105019/?format=api", "priority": 100, "id": 105019, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=38f777ed46ec4ae6", "url": "https://translate-dev.freebsd.org/api/units/105019/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.444302Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "If the process is allowed to keep a copy of the page (as it is in current 4.4BSD semantics), the page must be made <emphasis>copy-on-write</emphasis>. A copy-on-write page is one that is protected against being written by being made read-only. If the process attempts to modify the page, the kernel gets a write fault. The kernel then makes a copy of the page that the process can modify. Unfortunately, the typical process will immediately try to write new data to its output buffer, forcing the data to be copied anyway." ], "previous_source": "", "target": [ "If the process is allowed to keep a copy of the page (as it is in current 4.4BSD semantics), the page must be made <emphasis>copy-on-write</emphasis>. A copy-on-write page is one that is protected against being written by being made read-only. If the process attempts to modify the page, the kernel gets a write fault. The kernel then makes a copy of the page that the process can modify. Unfortunately, the typical process will immediately try to write new data to its output buffer, forcing the data to be copied anyway." ], "id_hash": -3134167655583548399, "content_hash": -3134167655583548399, "location": "book.translate.xml:1029", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 174, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 90, "source_unit": "https://translate-dev.freebsd.org/api/units/105020/?format=api", "priority": 100, "id": 105020, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=5481331f6e6c7c11", "url": "https://translate-dev.freebsd.org/api/units/105020/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.473108Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "When pages are remapped to new virtual-memory addresses, most memory-management hardware requires that the hardware address-translation cache be purged selectively. The cache purges are often slow. The net effect is that remapping is slower than copying for blocks of data less than 4 to 8 Kbyte." ], "previous_source": "", "target": [ "When pages are remapped to new virtual-memory addresses, most memory-management hardware requires that the hardware address-translation cache be purged selectively. The cache purges are often slow. The net effect is that remapping is slower than copying for blocks of data less than 4 to 8 Kbyte." ], "id_hash": 2447156447171678116, "content_hash": 2447156447171678116, "location": "book.translate.xml:1044", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 175, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 46, "source_unit": "https://translate-dev.freebsd.org/api/units/105021/?format=api", "priority": 100, "id": 105021, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=a1f60bd2b7798fa4", "url": "https://translate-dev.freebsd.org/api/units/105021/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.498886Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The biggest incentives for memory mapping are the needs for accessing big files and for passing large quantities of data between processes. The <emphasis>mmap</emphasis> interface provides a way for both of these tasks to be done without copying." ], "previous_source": "", "target": [ "The biggest incentives for memory mapping are the needs for accessing big files and for passing large quantities of data between processes. The <emphasis>mmap</emphasis> interface provides a way for both of these tasks to be done without copying." ], "id_hash": -7864817062787047181, "content_hash": -7864817062787047181, "location": "book.translate.xml:1053", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 176, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 38, "source_unit": "https://translate-dev.freebsd.org/api/units/105022/?format=api", "priority": 100, "id": 105022, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=12da8e8d0d25a0f3", "url": "https://translate-dev.freebsd.org/api/units/105022/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.532187Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Memory Management Inside the Kernel" ], "previous_source": "", "target": [ "Memory Management Inside the Kernel" ], "id_hash": 746676589466998513, "content_hash": 746676589466998513, "location": "book.translate.xml:1063", "context": "", "note": "(itstool) path: sect2/title", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 177, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 5, "source_unit": "https://translate-dev.freebsd.org/api/units/105023/?format=api", "priority": 100, "id": 105023, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=8a5cba66ed47d6f1", "url": "https://translate-dev.freebsd.org/api/units/105023/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.550046Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The kernel often does allocations of memory that are needed for only the duration of a single system call. In a user process, such short-term memory would be allocated on the run-time stack. Because the kernel has a limited run-time stack, it is not feasible to allocate even moderate-sized blocks of memory on it. Consequently, such memory must be allocated through a more dynamic mechanism. For example, when the system must translate a pathname, it must allocate a 1-Kbyte buffer to hold the name. Other blocks of memory must be more persistent than a single system call, and thus could not be allocated on the stack even if there was space. An example is protocol-control blocks that remain throughout the duration of a network connection." ], "previous_source": "", "target": [ "The kernel often does allocations of memory that are needed for only the duration of a single system call. In a user process, such short-term memory would be allocated on the run-time stack. Because the kernel has a limited run-time stack, it is not feasible to allocate even moderate-sized blocks of memory on it. Consequently, such memory must be allocated through a more dynamic mechanism. For example, when the system must translate a pathname, it must allocate a 1-Kbyte buffer to hold the name. Other blocks of memory must be more persistent than a single system call, and thus could not be allocated on the stack even if there was space. An example is protocol-control blocks that remain throughout the duration of a network connection." ], "id_hash": -2941272869182277737, "content_hash": -2941272869182277737, "location": "book.translate.xml:1065", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 178, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 125, "source_unit": "https://translate-dev.freebsd.org/api/units/105024/?format=api", "priority": 100, "id": 105024, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=572e7fe8b4e57797", "url": "https://translate-dev.freebsd.org/api/units/105024/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.565757Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Demands for dynamic memory allocation in the kernel have increased as more services have been added. A generalized memory allocator reduces the complexity of writing code inside the kernel. Thus, the 4.4BSD kernel has a single memory allocator that can be used by any part of the system. It has an interface similar to the C library routines <emphasis>malloc</emphasis> and <emphasis>free</emphasis> that provide memory allocation to application programs <xref linkend=\"biblio-mckusick-2\"/>. Like the C library interface, the allocation routine takes a parameter specifying the size of memory that is needed. The range of sizes for memory requests is not constrained; however, physical memory is allocated and is not paged. The free routine takes a pointer to the storage being freed, but does not require the size of the piece of memory being freed." ], "previous_source": "", "target": [ "Demands for dynamic memory allocation in the kernel have increased as more services have been added. A generalized memory allocator reduces the complexity of writing code inside the kernel. Thus, the 4.4BSD kernel has a single memory allocator that can be used by any part of the system. It has an interface similar to the C library routines <emphasis>malloc</emphasis> and <emphasis>free</emphasis> that provide memory allocation to application programs <xref linkend=\"biblio-mckusick-2\"/>. Like the C library interface, the allocation routine takes a parameter specifying the size of memory that is needed. The range of sizes for memory requests is not constrained; however, physical memory is allocated and is not paged. The free routine takes a pointer to the storage being freed, but does not require the size of the piece of memory being freed." ], "id_hash": 3028587596066806213, "content_hash": 3028587596066806213, "location": "book.translate.xml:1081", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 179, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 132, "source_unit": "https://translate-dev.freebsd.org/api/units/105025/?format=api", "priority": 100, "id": 105025, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=aa07b45f5ab759c5", "url": "https://translate-dev.freebsd.org/api/units/105025/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.584409Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "I/O System" ], "previous_source": "", "target": [ "I/O System" ], "id_hash": -2445547610031488352, "content_hash": -2445547610031488352, "location": "book.translate.xml:1105", "context": "", "note": "(itstool) path: sect1/title", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 180, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 2, "source_unit": "https://translate-dev.freebsd.org/api/units/105026/?format=api", "priority": 100, "id": 105026, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=5e0fab67dec482a0", "url": "https://translate-dev.freebsd.org/api/units/105026/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.594395Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The basic model of the UNIX I/O system is a sequence of bytes that can be accessed either randomly or sequentially. There are no <emphasis>access methods</emphasis> and no <emphasis>control blocks</emphasis> in a typical UNIX user process." ], "previous_source": "", "target": [ "The basic model of the UNIX I/O system is a sequence of bytes that can be accessed either randomly or sequentially. There are no <emphasis>access methods</emphasis> and no <emphasis>control blocks</emphasis> in a typical UNIX user process." ], "id_hash": 2687434724243936780, "content_hash": 2687434724243936780, "location": "book.translate.xml:1107", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 181, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 36, "source_unit": "https://translate-dev.freebsd.org/api/units/105027/?format=api", "priority": 100, "id": 105027, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=a54bafa49f9c160c", "url": "https://translate-dev.freebsd.org/api/units/105027/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.613449Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Different programs expect various levels of structure, but the kernel does not impose structure on I/O. For instance, the convention for text files is lines of ASCII characters separated by a single newline character (the ASCII line-feed character), but the kernel knows nothing about this convention. For the purposes of most programs, the model is further simplified to being a stream of data bytes, or an <emphasis>I/O stream</emphasis>. It is this single common data form that makes the characteristic UNIX tool-based approach work <xref linkend=\"biblio-kernighan\"/>. An I/O stream from one program can be fed as input to almost any other program. (This kind of traditional UNIX I/O stream should not be confused with the Eighth Edition stream I/O system or with the System V, Release 3 STREAMS, both of which can be accessed as traditional I/O streams.)" ], "previous_source": "", "target": [ "Different programs expect various levels of structure, but the kernel does not impose structure on I/O. For instance, the convention for text files is lines of ASCII characters separated by a single newline character (the ASCII line-feed character), but the kernel knows nothing about this convention. For the purposes of most programs, the model is further simplified to being a stream of data bytes, or an <emphasis>I/O stream</emphasis>. It is this single common data form that makes the characteristic UNIX tool-based approach work <xref linkend=\"biblio-kernighan\"/>. An I/O stream from one program can be fed as input to almost any other program. (This kind of traditional UNIX I/O stream should not be confused with the Eighth Edition stream I/O system or with the System V, Release 3 STREAMS, both of which can be accessed as traditional I/O streams.)" ], "id_hash": -8831105074891159117, "content_hash": -8831105074891159117, "location": "book.translate.xml:1116", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 182, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 137, "source_unit": "https://translate-dev.freebsd.org/api/units/105028/?format=api", "priority": 100, "id": 105028, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=05719cb93cf689b3", "url": "https://translate-dev.freebsd.org/api/units/105028/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.627774Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Descriptors and I/O" ], "previous_source": "", "target": [ "Descriptors and I/O" ], "id_hash": 4647983525829485304, "content_hash": 4647983525829485304, "location": "book.translate.xml:1142", "context": "", "note": "(itstool) path: sect2/title", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 183, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 3, "source_unit": "https://translate-dev.freebsd.org/api/units/105029/?format=api", "priority": 100, "id": 105029, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=c080f46402ef22f8", "url": "https://translate-dev.freebsd.org/api/units/105029/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.642577Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "UNIX processes use <emphasis>descriptors</emphasis> to reference I/O streams. Descriptors are small unsigned integers obtained from the <emphasis>open</emphasis> and <emphasis>socket</emphasis> system calls. The <emphasis>open</emphasis> system call takes as arguments the name of a file and a permission mode to specify whether the file should be open for reading or for writing, or for both. This system call also can be used to create a new, empty file. A <emphasis>read</emphasis> or <emphasis>write</emphasis> system call can be applied to a descriptor to transfer data. The <emphasis>close</emphasis> system call can be used to deallocate any descriptor." ], "previous_source": "", "target": [ "UNIX processes use <emphasis>descriptors</emphasis> to reference I/O streams. Descriptors are small unsigned integers obtained from the <emphasis>open</emphasis> and <emphasis>socket</emphasis> system calls. The <emphasis>open</emphasis> system call takes as arguments the name of a file and a permission mode to specify whether the file should be open for reading or for writing, or for both. This system call also can be used to create a new, empty file. A <emphasis>read</emphasis> or <emphasis>write</emphasis> system call can be applied to a descriptor to transfer data. The <emphasis>close</emphasis> system call can be used to deallocate any descriptor." ], "id_hash": -2047044968279792695, "content_hash": -2047044968279792695, "location": "book.translate.xml:1144", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 184, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 92, "source_unit": "https://translate-dev.freebsd.org/api/units/105030/?format=api", "priority": 100, "id": 105030, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=63976f72726ea3c9", "url": "https://translate-dev.freebsd.org/api/units/105030/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.658931Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Descriptors represent underlying objects supported by the kernel, and are created by system calls specific to the type of object. In 4.4BSD, three kinds of objects can be represented by descriptors: files, pipes, and sockets." ], "previous_source": "", "target": [ "Descriptors represent underlying objects supported by the kernel, and are created by system calls specific to the type of object. In 4.4BSD, three kinds of objects can be represented by descriptors: files, pipes, and sockets." ], "id_hash": -3053734917565836924, "content_hash": -3053734917565836924, "location": "book.translate.xml:1168", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 185, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 35, "source_unit": "https://translate-dev.freebsd.org/api/units/105031/?format=api", "priority": 100, "id": 105031, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=559ef44598481184", "url": "https://translate-dev.freebsd.org/api/units/105031/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.678590Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "A <emphasis>file</emphasis> is a linear array of bytes with at least one name. A file exists until all its names are deleted explicitly and no process holds a descriptor for it. A process acquires a descriptor for a file by opening that file's name with the <emphasis>open</emphasis> system call. I/O devices are accessed as files." ], "previous_source": "", "target": [ "A <emphasis>file</emphasis> is a linear array of bytes with at least one name. A file exists until all its names are deleted explicitly and no process holds a descriptor for it. A process acquires a descriptor for a file by opening that file's name with the <emphasis>open</emphasis> system call. I/O devices are accessed as files." ], "id_hash": 8200502402517358495, "content_hash": 8200502402517358495, "location": "book.translate.xml:1175", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 186, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 55, "source_unit": "https://translate-dev.freebsd.org/api/units/105032/?format=api", "priority": 100, "id": 105032, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=f1ce097ca9c8d79f", "url": "https://translate-dev.freebsd.org/api/units/105032/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.697115Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "A <emphasis>pipe</emphasis> is a linear array of bytes, as is a file, but it is used solely as an I/O stream, and it is unidirectional. It also has no name, and thus cannot be opened with <emphasis>open</emphasis>. Instead, it is created by the <emphasis>pipe</emphasis> system call, which returns two descriptors, one of which accepts input that is sent to the other descriptor reliably, without duplication, and in order. The system also supports a named pipe or FIFO. A FIFO has properties identical to a pipe, except that it appears in the filesystem; thus, it can be opened using the <emphasis>open</emphasis> system call. Two processes that wish to communicate each open the FIFO: One opens it for reading, the other for writing." ], "previous_source": "", "target": [ "A <emphasis>pipe</emphasis> is a linear array of bytes, as is a file, but it is used solely as an I/O stream, and it is unidirectional. It also has no name, and thus cannot be opened with <emphasis>open</emphasis>. Instead, it is created by the <emphasis>pipe</emphasis> system call, which returns two descriptors, one of which accepts input that is sent to the other descriptor reliably, without duplication, and in order. The system also supports a named pipe or FIFO. A FIFO has properties identical to a pipe, except that it appears in the filesystem; thus, it can be opened using the <emphasis>open</emphasis> system call. Two processes that wish to communicate each open the FIFO: One opens it for reading, the other for writing." ], "id_hash": -4571814326271342348, "content_hash": -4571814326271342348, "location": "book.translate.xml:1188", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 187, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 121, "source_unit": "https://translate-dev.freebsd.org/api/units/105033/?format=api", "priority": 100, "id": 105033, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=408da717bf8e08f4", "url": "https://translate-dev.freebsd.org/api/units/105033/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.724319Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "A <emphasis>socket</emphasis> is a transient object that is used for interprocess communication; it exists only as long as some process holds a descriptor referring to it. A socket is created by the <emphasis>socket</emphasis> system call, which returns a descriptor for it. There are different kinds of sockets that support various communication semantics, such as reliable delivery of data, preservation of message ordering, and preservation of message boundaries." ], "previous_source": "", "target": [ "A <emphasis>socket</emphasis> is a transient object that is used for interprocess communication; it exists only as long as some process holds a descriptor referring to it. A socket is created by the <emphasis>socket</emphasis> system call, which returns a descriptor for it. There are different kinds of sockets that support various communication semantics, such as reliable delivery of data, preservation of message ordering, and preservation of message boundaries." ], "id_hash": 1487511404518636145, "content_hash": 1487511404518636145, "location": "book.translate.xml:1215", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 188, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 67, "source_unit": "https://translate-dev.freebsd.org/api/units/105034/?format=api", "priority": 100, "id": 105034, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=94a4b3bdc1acfa71", "url": "https://translate-dev.freebsd.org/api/units/105034/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.749502Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "In systems before 4.2BSD, pipes were implemented using the filesystem; when sockets were introduced in 4.2BSD, pipes were reimplemented as sockets." ], "previous_source": "", "target": [ "In systems before 4.2BSD, pipes were implemented using the filesystem; when sockets were introduced in 4.2BSD, pipes were reimplemented as sockets." ], "id_hash": 4428544576870493657, "content_hash": 4428544576870493657, "location": "book.translate.xml:1230", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 189, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 21, "source_unit": "https://translate-dev.freebsd.org/api/units/105035/?format=api", "priority": 100, "id": 105035, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=bd7559d448592dd9", "url": "https://translate-dev.freebsd.org/api/units/105035/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.766722Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The kernel keeps for each process a <emphasis>descriptor table</emphasis>, which is a table that the kernel uses to translate the external representation of a descriptor into an internal representation. (The descriptor is merely an index into this table.) The descriptor table of a process is inherited from that process's parent, and thus access to the objects to which the descriptors refer also is inherited. The main ways that a process can obtain a descriptor are by opening or creation of an object, and by inheritance from the parent process. In addition, socket IPC allows passing of descriptors in messages between unrelated processes on the same machine." ], "previous_source": "", "target": [ "The kernel keeps for each process a <emphasis>descriptor table</emphasis>, which is a table that the kernel uses to translate the external representation of a descriptor into an internal representation. (The descriptor is merely an index into this table.) The descriptor table of a process is inherited from that process's parent, and thus access to the objects to which the descriptors refer also is inherited. The main ways that a process can obtain a descriptor are by opening or creation of an object, and by inheritance from the parent process. In addition, socket IPC allows passing of descriptors in messages between unrelated processes on the same machine." ], "id_hash": 531689082859934876, "content_hash": 531689082859934876, "location": "book.translate.xml:1234", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 190, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 106, "source_unit": "https://translate-dev.freebsd.org/api/units/105036/?format=api", "priority": 100, "id": 105036, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=8760f06762d1d49c", "url": "https://translate-dev.freebsd.org/api/units/105036/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.785697Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Every valid descriptor has an associated <emphasis>file offset</emphasis> in bytes from the beginning of the object. Read and write operations start at this offset, which is updated after each data transfer. For objects that permit random access, the file offset also may be set with the <emphasis>lseek</emphasis> system call. Ordinary files permit random access, and some devices do, as well. Pipes and sockets do not." ], "previous_source": "", "target": [ "Every valid descriptor has an associated <emphasis>file offset</emphasis> in bytes from the beginning of the object. Read and write operations start at this offset, which is updated after each data transfer. For objects that permit random access, the file offset also may be set with the <emphasis>lseek</emphasis> system call. Ordinary files permit random access, and some devices do, as well. Pipes and sockets do not." ], "id_hash": -8115492540738280083, "content_hash": -8115492540738280083, "location": "book.translate.xml:1251", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 191, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 65, "source_unit": "https://translate-dev.freebsd.org/api/units/105037/?format=api", "priority": 100, "id": 105037, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=0f5ffa882bf6656d", "url": "https://translate-dev.freebsd.org/api/units/105037/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.800469Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "When a process terminates, the kernel reclaims all the descriptors that were in use by that process. If the process was holding the final reference to an object, the object's manager is notified so that it can do any necessary cleanup actions, such as final deletion of a file or deallocation of a socket." ], "previous_source": "", "target": [ "When a process terminates, the kernel reclaims all the descriptors that were in use by that process. If the process was holding the final reference to an object, the object's manager is notified so that it can do any necessary cleanup actions, such as final deletion of a file or deallocation of a socket." ], "id_hash": -5276947107755711563, "content_hash": -5276947107755711563, "location": "book.translate.xml:1263", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 192, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 54, "source_unit": "https://translate-dev.freebsd.org/api/units/105038/?format=api", "priority": 100, "id": 105038, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=36c484905fb223b5", "url": "https://translate-dev.freebsd.org/api/units/105038/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.818956Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Descriptor Management" ], "previous_source": "", "target": [ "Descriptor Management" ], "id_hash": -327692760473909406, "content_hash": -327692760473909406, "location": "book.translate.xml:1272", "context": "", "note": "(itstool) path: sect2/title", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 193, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 2, "source_unit": "https://translate-dev.freebsd.org/api/units/105039/?format=api", "priority": 100, "id": 105039, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=7b73cd2ba87c4762", "url": "https://translate-dev.freebsd.org/api/units/105039/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.834964Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Most processes expect three descriptors to be open already when they start running. These descriptors are 0, 1, 2, more commonly known as <emphasis>standard input</emphasis>, <emphasis>standard output</emphasis>, and <emphasis>standard error</emphasis>, respectively. Usually, all three are associated with the user's terminal by the login process (see Section 14.6) and are inherited through <emphasis>fork</emphasis> and <emphasis>exec</emphasis> by processes run by the user. Thus, a program can read what the user types by reading standard input, and the program can send output to the user's screen by writing to standard output. The standard error descriptor also is open for writing and is used for error output, whereas standard output is used for ordinary output." ], "previous_source": "", "target": [ "Most processes expect three descriptors to be open already when they start running. These descriptors are 0, 1, 2, more commonly known as <emphasis>standard input</emphasis>, <emphasis>standard output</emphasis>, and <emphasis>standard error</emphasis>, respectively. Usually, all three are associated with the user's terminal by the login process (see Section 14.6) and are inherited through <emphasis>fork</emphasis> and <emphasis>exec</emphasis> by processes run by the user. Thus, a program can read what the user types by reading standard input, and the program can send output to the user's screen by writing to standard output. The standard error descriptor also is open for writing and is used for error output, whereas standard output is used for ordinary output." ], "id_hash": 8442873946439007102, "content_hash": 8442873946439007102, "location": "book.translate.xml:1274", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 194, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 111, "source_unit": "https://translate-dev.freebsd.org/api/units/105040/?format=api", "priority": 100, "id": 105040, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=f52b1d1f3ce5bb7e", "url": "https://translate-dev.freebsd.org/api/units/105040/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.851504Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "These (and other) descriptors can be mapped to objects other than the terminal; such mapping is called <emphasis>I/O redirection</emphasis>, and all the standard shells permit users to do it. The shell can direct the output of a program to a file by closing descriptor 1 (standard output) and opening the desired output file to produce a new descriptor 1. It can similarly redirect standard input to come from a file by closing descriptor 0 and opening the file." ], "previous_source": "", "target": [ "These (and other) descriptors can be mapped to objects other than the terminal; such mapping is called <emphasis>I/O redirection</emphasis>, and all the standard shells permit users to do it. The shell can direct the output of a program to a file by closing descriptor 1 (standard output) and opening the desired output file to produce a new descriptor 1. It can similarly redirect standard input to come from a file by closing descriptor 0 and opening the file." ], "id_hash": -8901134778408029004, "content_hash": -8901134778408029004, "location": "book.translate.xml:1297", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 195, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 78, "source_unit": "https://translate-dev.freebsd.org/api/units/105041/?format=api", "priority": 100, "id": 105041, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=0478d1144b1d34b4", "url": "https://translate-dev.freebsd.org/api/units/105041/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.868386Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Pipes allow the output of one program to be input to another program without rewriting or even relinking of either program. Instead of descriptor 1 (standard output) of the source program being set up to write to the terminal, it is set up to be the input descriptor of a pipe. Similarly, descriptor 0 (standard input) of the sink program is set up to reference the output of the pipe, instead of the terminal keyboard. The resulting set of two processes and the connecting pipe is known as a <emphasis>pipeline</emphasis>. Pipelines can be arbitrarily long series of processes connected by pipes." ], "previous_source": "", "target": [ "Pipes allow the output of one program to be input to another program without rewriting or even relinking of either program. Instead of descriptor 1 (standard output) of the source program being set up to write to the terminal, it is set up to be the input descriptor of a pipe. Similarly, descriptor 0 (standard input) of the sink program is set up to reference the output of the pipe, instead of the terminal keyboard. The resulting set of two processes and the connecting pipe is known as a <emphasis>pipeline</emphasis>. Pipelines can be arbitrarily long series of processes connected by pipes." ], "id_hash": 8316320529691551706, "content_hash": 8316320529691551706, "location": "book.translate.xml:1308", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 196, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 101, "source_unit": "https://translate-dev.freebsd.org/api/units/105042/?format=api", "priority": 100, "id": 105042, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=f3698175c28da7da", "url": "https://translate-dev.freebsd.org/api/units/105042/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.878437Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "The <emphasis>open</emphasis>, <emphasis>pipe</emphasis>, and <emphasis>socket</emphasis> system calls produce new descriptors with the lowest unused number usable for a descriptor. For pipelines to work, some mechanism must be provided to map such descriptors into 0 and 1. The <emphasis>dup</emphasis> system call creates a copy of a descriptor that points to the same file-table entry. The new descriptor is also the lowest unused one, but if the desired descriptor is closed first, <emphasis>dup</emphasis> can be used to do the desired mapping. Care is required, however: If descriptor 1 is desired, and descriptor 0 happens also to have been closed, descriptor 0 will be the result. To avoid this problem, the system provides the <emphasis>dup2</emphasis> system call; it is like <emphasis>dup</emphasis>, but it takes an additional argument specifying the number of the desired descriptor (if the desired descriptor was already open, <emphasis>dup2</emphasis> closes it before reusing it)." ], "previous_source": "", "target": [ "The <emphasis>open</emphasis>, <emphasis>pipe</emphasis>, and <emphasis>socket</emphasis> system calls produce new descriptors with the lowest unused number usable for a descriptor. For pipelines to work, some mechanism must be provided to map such descriptors into 0 and 1. The <emphasis>dup</emphasis> system call creates a copy of a descriptor that points to the same file-table entry. The new descriptor is also the lowest unused one, but if the desired descriptor is closed first, <emphasis>dup</emphasis> can be used to do the desired mapping. Care is required, however: If descriptor 1 is desired, and descriptor 0 happens also to have been closed, descriptor 0 will be the result. To avoid this problem, the system provides the <emphasis>dup2</emphasis> system call; it is like <emphasis>dup</emphasis>, but it takes an additional argument specifying the number of the desired descriptor (if the desired descriptor was already open, <emphasis>dup2</emphasis> closes it before reusing it)." ], "id_hash": -397534721569479975, "content_hash": -397534721569479975, "location": "book.translate.xml:1320", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 197, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 144, "source_unit": "https://translate-dev.freebsd.org/api/units/105043/?format=api", "priority": 100, "id": 105043, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=7a7bac46e6f7a2d9", "url": "https://translate-dev.freebsd.org/api/units/105043/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.904411Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Devices" ], "previous_source": "", "target": [ "Devices" ], "id_hash": -8812935440247938565, "content_hash": -8812935440247938565, "location": "book.translate.xml:1353", "context": "", "note": "(itstool) path: sect2/title", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 198, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/105044/?format=api", "priority": 100, "id": 105044, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=05b229e8f79221fb", "url": "https://translate-dev.freebsd.org/api/units/105044/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.932659Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Hardware devices have filenames, and may be accessed by the user via the same system calls used for regular files. The kernel can distinguish a <emphasis>device special file</emphasis> or <emphasis>special file</emphasis>, and can determine to what device it refers, but most processes do not need to make this determination. Terminals, printers, and tape drives are all accessed as though they were streams of bytes, like 4.4BSD disk files. Thus, device dependencies and peculiarities are kept in the kernel as much as possible, and even in the kernel most of them are segregated in the device drivers." ], "previous_source": "", "target": [ "Hardware devices have filenames, and may be accessed by the user via the same system calls used for regular files. The kernel can distinguish a <emphasis>device special file</emphasis> or <emphasis>special file</emphasis>, and can determine to what device it refers, but most processes do not need to make this determination. Terminals, printers, and tape drives are all accessed as though they were streams of bytes, like 4.4BSD disk files. Thus, device dependencies and peculiarities are kept in the kernel as much as possible, and even in the kernel most of them are segregated in the device drivers." ], "id_hash": -8724886687911583279, "content_hash": -8724886687911583279, "location": "book.translate.xml:1355", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 199, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 96, "source_unit": "https://translate-dev.freebsd.org/api/units/105045/?format=api", "priority": 100, "id": 105045, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=06eaf9c8a57ee1d1", "url": "https://translate-dev.freebsd.org/api/units/105045/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.945388Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_design-44bsd/en/?format=api", "source": [ "Hardware devices can be categorized as either <emphasis>structured</emphasis> or <emphasis>unstructured</emphasis>; they are known as <emphasis>block</emphasis> or <emphasis>character</emphasis> devices, respectively. Processes typically access devices through <emphasis>special files</emphasis> in the filesystem. I/O operations to these files are handled by kernel-resident software modules termed <emphasis>device drivers</emphasis>. Most network-communication hardware devices are accessible through only the interprocess-communication facilities, and do not have special files in the filesystem name space, because the <emphasis>raw-socket</emphasis> interface provides a more natural interface than does a special file." ], "previous_source": "", "target": [ "Hardware devices can be categorized as either <emphasis>structured</emphasis> or <emphasis>unstructured</emphasis>; they are known as <emphasis>block</emphasis> or <emphasis>character</emphasis> devices, respectively. Processes typically access devices through <emphasis>special files</emphasis> in the filesystem. I/O operations to these files are handled by kernel-resident software modules termed <emphasis>device drivers</emphasis>. Most network-communication hardware devices are accessible through only the interprocess-communication facilities, and do not have special files in the filesystem name space, because the <emphasis>raw-socket</emphasis> interface provides a more natural interface than does a special file." ], "id_hash": -8380253724143157604, "content_hash": -8380253724143157604, "location": "book.translate.xml:1369", "context": "", "note": "(itstool) path: sect2/para", "flags": "", "labels": [], "state": 100, "fuzzy": false, "translated": true, "approved": false, "position": 200, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 79, "source_unit": "https://translate-dev.freebsd.org/api/units/105046/?format=api", "priority": 100, "id": 105046, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_design-44bsd/en/?checksum=0bb35ba36ccd7e9c", "url": "https://translate-dev.freebsd.org/api/units/105046/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2019-10-20T12:22:22.970004Z" } ] }{ "count": 393, "next": "