I det här avsnittet finns allmän information, t.ex. beteendeförändringar i OS för Solaris 10.
SUSv3 (Single UNIX Specification, version 3) innehåller uppdateringar för följande operativsystemsgränssnitt för POSIX:
POSIX.1-1990
POSIX.1b-1993
POSIX.1c-1996
POSIX.2-1992
POSIX.2a-1992
Uppdateringarna innehåller följande ändringar:
Miljövariabeln ENV utökas inte längre i ett Korn-skal som inte är interaktivt. Den här ändringen gäller både /bin/ksh och /usr/xpg4/bin/sh.
Program som följer SUSv3 och andra standarder bör byggas med rätt funktionstestmakron, kompilerare och alternativ. Mer information finns i direkthjälpen för standards(5).
När kommandot file används tillsammans med alternativet -m, utför kommandot signerade jämförelser på användardefinierade magic-filer. I x86-miljön växlar dessutom inte kommandot ordningen för multibyte-heltal till fallande signifikans (SPARC) innan magic-värdena jämförs. Mer information finns i direkthjälpen för file(1) och magic(4).
snprintf() och vsnprintf() returnerar nu det antal byte som skulle formaterats vid indatavärdet n=0. Mer information finns i direkthjälpen för snprintf(3C) och vsnprintf(3C).
Redigeraren söker efter ytterligare villkor innan den läser .exrc-filerna i $HOME eller i den aktuella katalogen vid starten. Mer information finns i direkthjälpen förex(1) och vi(1).
Om time_t är för stor för att representeras i en tm-struktur, returneras en nollpekare av följande funktioner och errno anges till EOVERFLOW:
gmtime()
gmtime_r()
localtime()
localtime_r()
Mer information finns i direkthjälpen för gmtime(3C), gmtime_r(3C), localtime(3C) och localtime_r(3C).
SUSv3 tillåter bara ett avslutande snedstreck (/) i sökvägsnamn om sökvägen anger en befintlig katalog eller en katalog som ska skapas.
Verktygen i /usr/xpg6/bin och /usr/xpg4/bin uppvisar beteenden som följer SUSv3- eller XPG4-standarden och som står i konflikt med standardbeteendet för Solaris. PATH måste vara ordentligt konfigurerad för att en användare ska kunna använda kommandoradsmiljön som följer SUSv3-standarden. Mer information finns i direkthjälpen för det specifika verktyget.
Verktyget sendmail har lagts till i listan över tjänster som stöder TCP-inkapslare. Den kapacitet som har tillkommit i och med verktyget kan orsaka att sendmail nekar anslutningar i Solaris 10-system som tidigare konfigurerats med mycket restriktiva tjänster. Använd bakgrundsprogramnamnet sendmail om du vill aktivera användningen av TCP-inkapslare. Mer information om stöd för TCP-inkapslare finns i sendmail version 8.12 använder TCP-wrappers i Nyheter i Solaris 10. Information om hur du konfigurerar TCP-inkapslare finns i direkthjälpen för tcpd(1M) och hosts_access(4) i paketet SUNWtcpd.
I Solaris 10-versionen har Solaris fdisk-identifieraren satts till 0xbf för att underlätta konfigurationen av miljöer med flera startsystem som inkluderar operativsystemet Linux. I tidigare Solaris-versioner sattes fdisk-identifieraren till 0x82, samma identifierare som skivdelen för minnesväxling för Linux. Ändringen av identifierare gör att du kan installera OS för Solaris 10 och operativsystemet Linux utan att du först måste göra ändringar i skivdelen för minnesväxling för Linux eller installera om Linux.
Operativsystemet Solaris känner även i fortsättningen igen och stöder Solaris fdisk med 0x82-identifieraren. Använd kommandot fdisk om du vill växla mellan identifierarna 0x82 och 0xbf. Om du använder Solaris Live Upgrade och måste använda 0x82-identifieraren kan du byta 0xbf-identifieraren till 0x82 med kommandot luactivate.
Mer information finns i direkthjälpen för fdisk(1M).
Solaris-program tilldelar minne med hjälp av funktioner som exempelvis malloc(), brk() eller mmap(). Hur mycket minne som kan tilldelas av ett program begränsas av storleken på användarens virtuella adressutrymme. Programtext, -stack, -data och -bibliotek som finns i det virtuella adressutrymmet kan minska storleken för den maximala minnestilldelningen ytterligare.
I en 32-bitars datamiljö delas det virtuella adressutrymmet mellan användaren och kärnan. Det innebär att storleken på användarens virtuella adressutrymme är 4 GB minus storleken på kärnans virtuella adressutrymme. Hur storleken för det virtuella adressutrymmet konfigureras beror på mängden fysiskt minne. I takt med att det fysiska minnet ökar, minskar storleken på användarens virtuella adressutrymme. För system med 8 GB minne innebär detta att användarens virtuella adressutrymme är ungefär 3 GB.
Det finns två alternativ om minnestilldelningen är otillräcklig för ett program:
Du kan minska standardstorleken för kärnans virtuella adressutrymme, så ökar användarens virtuella adressutrymme. Du kan ge kernelbase-variabeln ett högre värde genom att använda kommandot eeprom. Var försiktig när du ändrar kernelbase. System med ett litet virtuellt adressutrymme för kärnan kan annars hänga sig eller fungera mindre effektivt.
Ett bättre alternativ är att köra programmet i Solaris x86 64-bitars datamiljö.
I en 64-bitars datamiljö är det virtuella adressutrymmet för 32-bitarsprogram helt och hållet till för användaren. Därför kan ett 32-bitarsprogram tilldela 4 GB minus det användaradressutrymme som krävs för text, stack och bibliotek.
På vissa tidiga 64-bitars AMD-processorer kan minnestilldelningen minskas ytterligare med 1 GB. Gå igenom följande steg för att avgöra om din processor påverkas:
Kör kommandot pmap $$ från ett 32-bitarsskal.
Kontrollera om adresser som är större eller lika med 0xC0000000 listas på processöversikten. Om det inte finns några sådana adresser begränsar operativsystemet Solaris 32-bitarsprogram till de 3 GB som är längst ned i det virtuella adressutrymmet på 4 GB.
Ett 64-bitarsprogram kan tilldela 250 TB minne beroende på hur mycket programmet redan använder.
Solaris 10 på x86 stöder NX-bit (no execute) i 32- och 64-bitarslägen. Med NX-bit aktiveras fullständig implementering av de skydd som tillämpas när PROT_EXEC inte används i olika minnessystemanrop, exempelvis funktionen mmap(). Tidigare angavs PROT_EXEC för allt mappat minne på x86-system. I och med att Solaris stöder NX-bit har virusskyddet förbättrats.
På NX-kompatibel maskinvara använder operativsystemet Solaris NX-bit som standard när inte PROT_EXEC specificeras. Stacksegment använder däremot PROT_EXEC som standard, inte NX-bit. Du kan ändra standardinställningen för stacksegment genom att göra något av följande:
Ange att no_exec_userstack i /etc/system globalt ska ange no exec för alla programstackar.
Länka ett enskilt program med /usr/lib/ld/map.noexstk-mappningsfilen.
Systemadministratören kan inaktivera all användning av NX-bit genom att använda eeprom-kommandot för att ange enforce-prot-exec till “off”. Den här variabeln medföljer som en övergångslösning för system med gamla program som saknar PROT_EXEC.