Por que eu desejaria limitar o tamanho do segmento ".data"?

2

Em esta resposta no StackOverflow, diz:

For example on Linux, if you initialize the data within the source (instead of reading a file at runtime) the data will be stored in a .data segment. The size of this segment can be limited by kernel options. You can find the current limit with ulimit -d.

Em minhas caixas Linux e MacOS, recebo:

$ ulimit -d
unlimited

Por que eu quero configurar um limite para o tamanho do segmento .data?

    
por Roger Lipscombe 02.03.2017 / 13:04

1 resposta

2

ulimit -d define o tamanho máximo de um segmento de dados de processo , não apenas o tamanho máximo do segmento .data de binário . Você o usaria para limitar a quantidade de memória que um processo pode usar; de acordo com POSIX :

RLIMIT_DATA

This is the maximum size of a data segment of the process, in bytes. If this limit is exceeded, the malloc() function shall fail with errno set to [ENOMEM].

O limite se aplica a binários em que um processo cujo segmento de dados foi limitado não poderá exec um binário com um segmento .data maior que o limite do segmento de dados. O limite continua a ser aplicado depois disso, de modo que o segmento de dados não possa crescer além do limite enquanto o processo estiver em execução.

Como todos os limites, isso é relevante em vários cenários. Em um sistema multiusuário, você definiria limites para que um único usuário não monopolizasse os recursos do sistema ou afetasse a capacidade de outros usuários de usar o sistema. Você também pode definir limites para que um único processo não monopolize os recursos do sistema ( por exemplo, um navegador da Web ou uma grande compilação ...). Hoje em dia você provavelmente é melhor usar algo como cgroups em um sistema Linux para esse tipo de controle de recursos.

    
por 02.03.2017 / 13:44

Tags