The translation is temporarily closed for contributions due to maintenance, please come back later.

Translation

(itstool) path: listitem/para
English
NetBSD-emulation of NetBSD operating system
Context English Portuguese (Brazil) State
- the scheduling cannot be altered by the user (slightly mitigated by the <trademark class="registered">POSIX</trademark> API) - o agendamento não pode ser alterado pelo usuário (ligeiramente mitigado pela API <trademark class="registered"> POSIX </trademark>)
+ no syscall wrapping necessary + não necessita de envolvimento do syscall
+ can utilize multiple CPUs + pode utilizar várias CPUs
1:N threading 1: N threading
+ lightweight threads + threads leves
+ scheduling can be easily altered by the user + agendamento pode ser facilmente alterado pelo usuário
- syscalls must be wrapped - syscalls devem ser acondicionadas
- cannot utilize more than one CPU - não pode utilizar mais de uma CPU
What is FreeBSD? O que é o FreeBSD?
The FreeBSD project is one of the oldest open source operating systems currently available for daily use. It is a direct descendant of the genuine <trademark class="registered">UNIX</trademark> so it could be claimed that it is a true <trademark class="registered">UNIX</trademark> although licensing issues do not permit that. The start of the project dates back to the early 1990's when a crew of fellow BSD users patched the 386BSD operating system. Based on this patchkit a new operating system arose named FreeBSD for its liberal license. Another group created the NetBSD operating system with different goals in mind. We will focus on FreeBSD. O projeto FreeBSD é um dos mais antigos sistemas operacionais de código aberto atualmente disponíveis para uso diário. É um descendente direto do verdadeiro <trademark class="registered">UNIX</trademark>, portanto, pode-se afirmar que ele é um verdadeiro <trademark class="registered">UNIX</trademark> embora os problemas de licenciamento não permitam isso. O início do projeto remonta ao início dos anos 90, quando uma equipe de usuários BSD corrigiu o sistema operacional 386BSD. Baseado neste patchkit surgiu um novo sistema operacional, chamado FreeBSD por sua licença liberal. Outro grupo criou o sistema operacional NetBSD com diferentes objetivos em mente. Vamos nos concentrar no FreeBSD.
FreeBSD is a modern <trademark class="registered">UNIX</trademark>-based operating system with all the features of <trademark class="registered">UNIX</trademark>. Preemptive multitasking, multiuser facilities, TCP/IP networking, memory protection, symmetric multiprocessing support, virtual memory with merged VM and buffer cache, they are all there. One of the interesting and extremely useful features is the ability to emulate other <trademark class="registered">UNIX</trademark>-like operating systems. As of December 2006 and 7-CURRENT development, the following emulation functionalities are supported: O FreeBSD é um sistema operacional baseado no <trademark class="registered">UNIX</trademark> com todos os recursos do <trademark class="registered">UNIX</trademark>. Multitarefa preemptiva, necessidades de multiusuário, rede TCP/IP, proteção de memória, suporte a multiprocessamento simétrico, memória virtual com VM mesclada e cache de buffer, todos eles estão lá. Um dos recursos interessantes e extremamente úteis é a capacidade de emular outros sistemas operacionais <trademark class="registered">UNIX</trademark>-like. A partir de dezembro de 2006 e do desenvolvimento do 7-CURRENT, as seguintes funcionalidades de emulação são suportadas:
FreeBSD/i386 emulation on FreeBSD/amd64 Emulação FreeBSD/i386 no FreeBSD/amd64
FreeBSD/i386 emulation on FreeBSD/ia64 Emulação de FreeBSD/i386 no FreeBSD/ia64
<trademark class="registered">Linux</trademark>-emulation of <trademark class="registered">Linux</trademark> operating system on FreeBSD Emulação-<trademark class="registered">Linux</trademark> do sistema operacional <trademark class="registered"> Linux </trademark> no FreeBSD
NDIS-emulation of Windows networking drivers interface Emulação de NDIS da interface de drivers de rede do Windows
NetBSD-emulation of NetBSD operating system Emulação de NetBSD do sistema operacional NetBSD
PECoff-support for PECoff FreeBSD executables Suporte PECoff para executáveis PECoff do FreeBSD
SVR4-emulation of System V revision 4 <trademark class="registered">UNIX</trademark> Emulação SVR4 do <trademark class="registered">UNIX</trademark> System V revisão 4
Actively developed emulations are the <trademark class="registered">Linux</trademark> layer and various FreeBSD-on-FreeBSD layers. Others are not supposed to work properly nor be usable these days. Emulações ativamente desenvolvidas são a camada <trademark class="registered">Linux</trademark> e várias camadas FreeBSD-on-FreeBSD. Outros não devem funcionar corretamente nem ser utilizáveis nos dias de hoje.
FreeBSD is traditional flavor of <trademark class="registered">UNIX</trademark> in the sense of dividing the run of processes into two halves: kernel space and user space run. There are two types of process entry to the kernel: a syscall and a trap. There is only one way to return. In the subsequent sections we will describe the three gates to/from the kernel. The whole description applies to the i386 architecture as the Linuxulator only exists there but the concept is similar on other architectures. The information was taken from [1] and the source code. O FreeBSD é o gostinho tradicional de <trademark class="registered">UNIX</trademark> no sentido de dividir a execução dos processos em duas metades: espaço do kernel e execução do espaço do usuário. Existem dois tipos de entrada de processo no kernel: uma syscall e uma trap. Há apenas uma maneira de retornar. Nas seções subseqüentes, descreveremos as três portas de/para o kernel. Toda a descrição se aplica à arquitetura i386, pois o Linuxulator só existe lá, mas o conceito é semelhante em outras arquiteturas. A informação foi retirada de [1] e do código fonte.
System entries Entradas do sistema
FreeBSD has an abstraction called an execution class loader, which is a wedge into the <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry> syscall. This employs a structure <literal>sysentvec</literal>, which describes an executable ABI. It contains things like errno translation table, signal translation table, various functions to serve syscall needs (stack fixup, coredumping, etc.). Every ABI the FreeBSD kernel wants to support must define this structure, as it is used later in the syscall processing code and at some other places. System entries are handled by trap handlers, where we can access both the kernel-space and the user-space at once. O FreeBSD tem uma abstração chamada loader de classes de execução, que é uma entrada na syscall <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry>. Isto emprega uma estrutura <literal>sysentvec</literal>, que descreve uma ABI executável. Ele contém coisas como tabela de tradução de errno, tabela de tradução de sinais, várias funções para atender às necessidades da syscall (correção de pilha, coredumping, etc.). Toda ABI que o kernel do FreeBSD deseja suportar deve definir essa estrutura, como é usado posteriormente no código de processamento da syscall e em alguns outros lugares. As entradas do sistema são tratadas pelos manipuladores de traps, onde podemos acessar o espaço do kernel e o espaço do usuário de uma só vez.
Syscalls Syscalls
Syscalls on FreeBSD are issued by executing interrupt <literal>0x80</literal> with register <varname>%eax</varname> set to a desired syscall number with arguments passed on the stack. Syscalls no FreeBSD são emitidos executando a interrupção <literal> 0x80 </literal> com o registrador <varname>%eax</varname> definido para um número de syscall desejado com argumentos passados na pilha.
When a process issues an interrupt <literal>0x80</literal>, the <literal>int0x80</literal> syscall trap handler is issued (defined in <filename>sys/i386/i386/exception.s</filename>), which prepares arguments (i.e. copies them on to the stack) for a call to a C function <citerefentry><refentrytitle>syscall</refentrytitle><manvolnum>2</manvolnum></citerefentry> (defined in <filename>sys/i386/i386/trap.c</filename>), which processes the passed in trapframe. The processing consists of preparing the syscall (depending on the <literal>sysvec</literal> entry), determining if the syscall is 32-bit or 64-bit one (changes size of the parameters), then the parameters are copied, including the syscall. Next, the actual syscall function is executed with processing of the return code (special cases for <literal>ERESTART</literal> and <literal>EJUSTRETURN</literal> errors). Finally an <literal>userret()</literal> is scheduled, switching the process back to the users-pace. The parameters to the actual syscall handler are passed in the form of <literal>struct thread *td</literal>, <literal>struct syscall args *</literal> arguments where the second parameter is a pointer to the copied in structure of parameters. Quando um processo emite uma interrupção <literal>0x80</literal>, a syscall manipuladora de trap <literal>int0x80</literal> é proclamada (definida em <filename>sys/i386/i386/exception.s</filename>), que prepara argumentos (ou seja, copia-os para a pilha) para uma chamada para uma função C <citerefentry><refentrytitle>syscall</refentrytitle><manvolnum>2</manvolnum></citerefentry> (definida em <filename>sys/i386/i386/trap.c</filename>), que processa o trapframe passado. O processamento consiste em preparar a syscall (dependendo da entrada <literal>sysvec</literal>), determinando se a syscall é de 32 ou 64 bits (muda o tamanho dos parâmetros), então os parâmetros são copiados, incluindo a syscall. Em seguida, a função syscall real é executada com o processamento do código de retorno (casos especiais para erros <literal>ERESTART</literal> e <literal>EJUSTRETURN</literal>). Finalmente, um <literal>userret()</literal> é agendado, trocando o processo de volta ao ritmo do usuário. Os parâmetros para a syscall manipuladora atual são passados na forma de argumentos <literal>struct thread *td </literal>, <literal>struct syscall args*</literal> onde o segundo parâmetro é um ponteiro para o copiado na estrutura de parâmetros.
Traps Armadilhas (Traps)
Handling of traps in FreeBSD is similar to the handling of syscalls. Whenever a trap occurs, an assembler handler is called. It is chosen between alltraps, alltraps with regs pushed or calltrap depending on the type of the trap. This handler prepares arguments for a call to a C function <literal>trap()</literal> (defined in <filename>sys/i386/i386/trap.c</filename>), which then processes the occurred trap. After the processing it might send a signal to the process and/or exit to userland using <literal>userret()</literal>. O manuseio de traps no FreeBSD é similar ao manuseio de syscalls. Sempre que ocorre uma trap, um manipulador de assembler é chamado. É escolhido entre alltraps, alltraps com regs push ou calltrap, dependendo do tipo de trap. Este manipulador prepara argumentos para uma chamada para uma função C <literal>trap()</literal> (definida em <filename>sys/i386/i386/trap.c</filename>), que então processa a trap ocorrida. Após o processamento, ele pode enviar um sinal para o processo e/ou sair para o espaço do usuário usando <literal>userret()</literal>.
Exits Saídas
Exits from kernel to userspace happen using the assembler routine <literal>doreti</literal> regardless of whether the kernel was entered via a trap or via a syscall. This restores the program status from the stack and returns to the userspace. As saídas do kernel para o userspace acontecem usando a rotina assembler <literal>doreti</literal>, independentemente de o kernel ter sido acessado por meio de uma trap ou via syscall. Isso restaura o status do programa da pilha e retorna ao espaço do usuário.
<trademark class="registered">UNIX</trademark> primitives primitivas <trademark class="registered">UNIX</trademark>
FreeBSD operating system adheres to the traditional <trademark class="registered">UNIX</trademark> scheme, where every process has a unique identification number, the so called <firstterm>PID</firstterm> (Process ID). PID numbers are allocated either linearly or randomly ranging from <literal>0</literal> to <literal>PID_MAX</literal>. The allocation of PID numbers is done using linear searching of PID space. Every thread in a process receives the same PID number as result of the <citerefentry><refentrytitle>getpid</refentrytitle><manvolnum>2</manvolnum></citerefentry> call. O sistema operacional FreeBSD adere ao esquema tradicional <trademark class="registered">UNIX</trademark>, onde cada processo possui um número de identificação único, o chamado <firstterm>PID</firstterm> (ID do processo). Números PID são alocados de forma linear ou aleatória variando de <literal>0</literal> para <literal>PID_MAX</literal>. A alocação de números PID é feita usando pesquisa linear de espaço PID. Cada thread em um processo recebe o mesmo número PID como resultado da chamada <citerefentry><refentrytitle>getpid</refentrytitle><manvolnum>2</manvolnum></citerefentry>.

Loading…

No matching activity found.

Browse all component changes

Glossary

English Portuguese (Brazil)
No related strings found in the glossary.

Source information

Source string comment
(itstool) path: listitem/para
Source string location
article.translate.xml:297
String age
a year ago
Source string age
a year ago
Translation file
articles/pt_BR/linux-emulation.po, string 52